linux sed 批量替換字串

2022-08-16 22:06:19 字數 1947 閱讀 1770

比如,要將目錄/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...