給未來的裕翔
請看以下
sed 's/^cat$/dog/i' filename
那個i
不是inform
而是ignore case
Showing posts with label sed. Show all posts
Showing posts with label sed. Show all posts
Monday, August 2, 2010
Friday, July 30, 2010
sed的delimiter
給未來的裕翔
剛看到一個指令
rpm -ql rpm | sed -n '/bin/s:.*/::p'
一開始看到::就傻眼了
而且還有那個s:
經我小小的大腦思考後
我判斷那個::和:都是delimiter
而完整的意思就是
先以rpm -ql rpm把套件rpm所含有的檔案列出來
再以sed作處理, -n的意思是, sed只列出作處理的那幾行
不加-n的話, 從stdin進來的都會列出來
再來就是重頭戲'/bin/s:.*/::p'
上色加空白以表示方便的看法
' / bin / s : .*/ : : p'
紅色的斜線是第一階段的delimiter, 區隔範圍和動作
/bin/的意思是鎖定stdin含有bin的行
後接的s:.*/::p是說, 任意連續字元 .* 以斜線 / 當右側結束字元(貪婪原則)
全部替換為無
然後print出來
真是帥呆了!
剛看到一個指令
rpm -ql rpm | sed -n '/bin/s:.*/::p'
一開始看到::就傻眼了
而且還有那個s:
經我小小的大腦思考後
我判斷那個::和:都是delimiter
而完整的意思就是
先以rpm -ql rpm把套件rpm所含有的檔案列出來
再以sed作處理, -n的意思是, sed只列出作處理的那幾行
不加-n的話, 從stdin進來的都會列出來
再來就是重頭戲'/bin/s:.*/::p'
上色加空白以表示方便的看法
' / bin / s : .*/ : : p'
紅色的斜線是第一階段的delimiter, 區隔範圍和動作
/bin/的意思是鎖定stdin含有bin的行
後接的s:.*/::p是說, 任意連續字元 .* 以斜線 / 當右側結束字元(貪婪原則)
全部替換為無
然後print出來
真是帥呆了!
Friday, July 16, 2010
sed更完內容自動備份
給未來的裕翔
如果想要對檔案內容的某個字
做一致的更換
除了真的進去vim之外
可以考慮用sed
sed -i.bak 's/aaa/AAA/' targetFile
這樣就可以把targetFile裡面的aaa都換成AAA
-i.bak的意思是
換成AAA之後的檔案, 依然叫targetFile
但是換之前的, 存成targetFile.bak當備份
注意, -i和.bak中間不能有空白
而那個's/aaa/AAA/'的最後一個/不能省略
報告完畢
如果想要對檔案內容的某個字
做一致的更換
除了真的進去vim之外
可以考慮用sed
sed -i.bak 's/aaa/AAA/' targetFile
這樣就可以把targetFile裡面的aaa都換成AAA
-i.bak的意思是
換成AAA之後的檔案, 依然叫targetFile
但是換之前的, 存成targetFile.bak當備份
注意, -i和.bak中間不能有空白
而那個's/aaa/AAA/'的最後一個/不能省略
報告完畢
Subscribe to:
Posts (Atom)