比如,要將目錄/modules下面所有檔案中的zhangsan都修改成lisi,這樣做:
sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`
解釋一下:
-i 表示inplace edit,就地修改檔案
-r 表示搜尋子目錄
-l 表示輸出匹配的檔名
這個命令組合很強大,要注意備份檔案。
(1)sed 'y/1234567890/abcdefghij/' test_sed
sed 'y/1234567890/abcdefghij/' filename
abcdefghij
bcdefghija
cdefghijab
defghijabc
注意變換關係是按兩個list的位置對應變換
其中:test_sed的內容是:
1234567890
2345678901
3456789012
4567890123
(2)替換每行所有匹配
sed 's/01/ab/g' test_sed
1234567890
23456789ab
3456789ab2
456789ab23
注意:第一行的0,1沒有分別替換為a,b
刪除:d命令
替換:s命令
選定行的範圍:逗號
從檔案讀入:r命令
寫入檔案:w命令
追加命令:a命令
插入:i命令 $ sed '/test/i\\
new line
-------------------------' example
如果test被匹配,則把反斜槓後面的文字插入到匹配行的前面。
下乙個:n命令
變形:y命令
退出:q命令
保持和獲取:h命令和g命令
保持和互換:h命令和x命令
7. 指令碼
sed指令碼是乙個sed的命令清單,啟動sed時以-f選項引導指令碼檔名。sed對於指令碼中輸入的命令非常挑剔,在命令的末尾不能有任何空白或文字,如果在一行中有多個命令,要用分號分隔。以#開頭的行為注釋行,且不能跨行。
8. 小技巧
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
例如:替換/home下所有檔案中的www.itbbs.cn為chinafar.com
二、下面這條命令:
perl -pi -e 's|abcd|linux|g' `find ./ -type f`
將呼叫perl執行一條替換命令,把find命令找到的所有檔案內容中的abcd替換為linux
find ./ -type f
此命令是顯示當前目錄下所有的檔案
上面的「s|abcd|linux| g」是perl要執行的指令碼,即把所有abcd替換為linux
如果不寫最後的那個g,「s|abcd|linux| 」將只替換每一行開頭的abcd
當編輯指令(參照[section2.2])在命令列上執行時,其前必須加上選項-e。其命令格式如下:
sed-e'編輯指令1'-e'編輯指令2'...檔案檔
其中,所有編輯指令都緊接在選項-e之後,並置於兩個"'"特殊字元間。另外,命令上編輯指令的執行是由
左而右。
一般編輯指令不多時,使用者通常直接在命令上執行它們。
例如,刪除yel.dat內1至10行資料,並將其餘文字中的"yellow"字串改成"black"字串。此時,可將編輯指令直接在命令上執行,其命令如下:
sed-e'1,10d'-e's/yellow/black/g'yel.dat
linux sed 批量替換字串
一月 21,2014 no comments linux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。命令如下 sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 例如 我要把 charset gb2312 替換為 charset utf 8,執行...
linux sed 批量替換字串
inux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。命令如下 sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 解釋一下 i 表示inplace edit,就地修改檔案 r 表示搜尋子目錄 l 表示輸出匹配的檔名 這個命令組合很強大,要注意備份...
linux sed 批量替換字串
linux下批量替換多個檔案中的字串的簡單方法。用sed命令可以批量替換多個檔案中的字串。命令如下 sed i s 原字串 新字串 g grep 原字串 rl 所在目錄 例如 我要把 charset gb2312 替換為 charset utf 8,執行命令 sed i s charset gb23...