linux sed 批量替換檔案內容

2021-09-02 03:42:20 字數 1259 閱讀 3168

一、linux sed 批量替換多個檔案內容

sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`

其中,grep oldstring -rl yourdir是查尋目錄中檔案內容

如將indexeddb目錄裡的檔案內容替換 #

idbtransaction.read_only替換為

"readonly"

sed -i "s/idbtransaction.read_only/\"readonly\"/g" `grep "idbtransaction.read_only" -rl indexeddb/` #

driver.get_current_url()替換為driver.current_url

sed -i "s/driver.get_current_url()/driver.current_url/g" `grep "driver.get_current_url()" -rl webdriver/`

-i 表示inplace edit,就地修改檔案

-r 表示搜尋子目錄

-l 表示輸出匹配的檔名

二、perl命令:

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

三、行尾匹配

如下:清除行尾的'/'

grep "" -rl ./ |xargs -i% sed -i 's/\/>$/>/g' %

注意表示式:s/ \ /> $/ > /g(即'/>' to '>')

幾點說明:

1."^"代表行首,"$"代表行尾

2.'s/$/&tail/g'中的字元g代表每行出現的字元全部替換,如果想在特定字元處新增,g就有用了,否則只會替換每行第乙個,而不繼續往後找了

3.>> :如果檔案不存在,將建立新的檔案,並將資料送至此檔案;如果檔案存在,則將資料新增在檔案後面

4.>  :如果檔案不存在,同上,如果檔案存在,先將檔案清空,然後將資料填入此檔案.

linux sed 批量替換檔案中的字串或符號

sed i 直接修改讀取的檔案內容,而不是輸出到終端。sed i就是直接對文字檔案進行操作的 替換每行第一次出現的字串 sed i s 查詢的字串 替換的字串 檔案 替換檔案中所有出現過的字串 sed i s 查詢的字串 替換的字串 g 檔案 例如,將檔案gaoweiliushi 201809 08...

python批量替換資料夾內的檔案內容

author jingyuan import os import re 要改的資料夾 dir e testscript 要改的檔案型別 可以輸入多個 file type htm 替換表 可以用python正規表示式 look up table map list a c a b def get fil...

python批量替換檔案內的字串

coding utf 8 import os import io def alter file,old str,new str 替換檔案中的字串 param file 檔名 param old str 就字串 param new str 新字串 return file data with io.op...