2012年4月24日 星期二

string operation -- replace file extension name

如果只是簡單的filename 操作,可以用 "${filename...}"
例如:把所有 mp4 檔 rename 成 avi: for file in *.mp4;do mv "$file" "${file/.mp4/.avi}";done
像這個 ${file/.mp4/.avi} 就是把 $file 中 .mp4 換成 .avi,其中的兩個 "/" 符號就是 replace。


ref:
  1. http://www.thegeekstuff.com/2010/07/bash-string-manipulation/
  2. http://www.faqs.org/docs/abs/HTML/string-manipulation.html

2012年4月17日 星期二

sed -- delete lines containing string

刪除包含某些字串的內容(行)

這個用 sed 來作 sed '/match string/d' file > out
sed 是用 '/.../' 來指定操作。

/../ 內是 match 的 pattern,
最後的/ 後面指定操作。
/../d 代表刪除。

所以 sed '/match string/d' infile > out
會把infile 中,所有包含 "match string" 的字行都刪除。



要是要刪除很多字串,可以用 -e 選項把所有 pattern command 連起來.. sed '/stringA/d' -e '/stringB/d' -e '/stringC/d' infile > out

但是要是 pattern command 有很多,也可以寫在 file 裡,一行代表一個command.. # delabc : del stringA.B.C /stringA/d /stringB/d /stringC/d
然後用以下command: sed -f delabc infile > out