顯示具有 sed 標籤的文章。 顯示所有文章
顯示具有 sed 標籤的文章。 顯示所有文章

2014年10月13日 星期一

刪除括號 (和括號內的文字)

$ echo '0 [123] 456' | sed 's/\[.*\]//' 
0  456

就是.. 把 [.*] switch 成 empty.
因為 [,] 要 escapre,所以變成 \[.*\]

把他放到 s/pattern/replace/action 裡的 pattern.

2013年1月3日 星期四

sed -- 取出 pattern 中的某個部份

例如:從 XML 檔中取出某 tag 的值。
<name>Charles</name> <id>123</id> <color>red</color> ...

用 sed 來操作,就是...
  • 找到 符合 pattern 的地方
  • 印出 pattern 的某個部份

以上面的例子,xml tag 的 pattern 和 value就是: <.*> \(.*\) <\/.*>
前後被 tag 包起來,中間的部份要留下來 \(.*\)

把這個放到 sed 控制字串中: sed 's/ <.*>\(.*\)<\/.*> / \1 /' file 一樣用 s 指令。
最後用 \1 代表 pattern 中,第一個 \(.*\) 的內容。

這樣所有的 tag 都會被取出。
如果只是要某個 tag,例如 : id。
就可以把 id 寫入 pattern 中: sed 's/ <id>\(.*\)<\/id> / \1 /' file





2012年7月23日 星期一

copy files according the list file

其實這是 moore 的 script。
他把各系統要 copy 的 filename 寫在同一個 list file 中,每個 filename 用 ≶ > 刮起來。
仿造 xml 格式,裡面是 系統名稱。
<N_Series>MyBrowser.apk</N_Series>

所以要寫一個 script,依照這個 list 內容來 copy files..




要注意那個從 filelist xml 中剔除 tag 的 sed,要先把 </...> 剔除,再剔除開頭的。
否則因為整個 entry 剛好被包圍,所以會被整個剔除。

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

2011年5月6日 星期五

sed , @ , /

sed 的 command 和 option 用了 '/' 作分別符號,
所以當要 match 的 char 有 '/' 時?

就用 @ 來代替。

當用 @ 代替時, '/' 就恢復一般字元使用。

這裡 :
http://nano-chicken.blogspot.com/2010/01/linux-modules11-sysfs-and-device-node.html
有使用的範例。