2014年2月21日

字串取代,使用 awk & sed


 awk

有些實驗數據僅需要某幾個欄位值,用 awk 可以簡單達到目的
假設 Shell 環境中的字串 str 內容為1 2 3 4 5 6 7 8 9 10,
要取出其中幾個數值,如 2 4 6 8 10
echo $str  | awk  ' { print $2 $4 $6 $8 $10 }; '
若是檔案中有一連串的字串:
cat file | awk  ' { print $2 $4 $6 $8 $10 }; '
或是要調換 1 與 2
echo $str  | awk  ' { print $2 $1 $3 $4 $5 $6 $7 $8 $9 $10 };'
Sed

因為 tr 似乎只能作一對一的字元轉換,所以找到 sed 的方法來轉換一對多的字串。
Replace one "M" to "000K" 
String: echo 1M | sed 's/M/000K/'
Replace all "M" to "000K"
String: echo 1M | sed 's/M/000K/g' 
File: sed 's/old/new/g' input.txt > output.txt
Reference:
  1. Dale Dougherty & Arnold Robbins, sed & awk, Second Edition, O'Reilly, March 1997.
  2. Vivek Gite, Bash Shell: Replace a string with another string in all files using sed and perl -pie, http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/, 2007.
  3. monsanbu, http://www.unix.com/unix-dummies-questions-answers/21866-replace-character-tr.html, 2005.

沒有留言:

張貼留言

歡迎留言