linux文件字元替換
A. linux查找和替換目錄下所有文件中字元串
linux查找和替換目錄下所有文件中字元串單個文件中查找替換很簡單,就不說了。文件夾下所有文件中字元串的查找替換就要記憶了,最近部署幾十台linux伺服器,記錄下總結。查找文件夾下包含字元串的文件例:查找/usr/local目錄下所有包含rubyer.me的文件。1
grep
-lr
'rubyer.me'
/usr/local/*vim替換單個文件中所有字元串方法例:替換當前文件中所有old為new
www.shiwu.com
1
:%s/old/new/g2#%表示替換說有行,g表示替換一行中所有匹配點。
替換文件夾下包含字元串的文件sed結合grep例:要將目錄/www下面所有文件中的zhangsan都修改成lisi,這樣做:1
sed
-i
s/old/new/g
`grep
old
-rl
/www`作者
skq
B. linux如何替換文件指定行的特定位置字元串
可以通過Shell腳本替換字元串方式,如果知道第幾行,格式如下:
<string id="str_ig_ghjjk">hello</string>
字元串內容可能是任意字元串,如何把>和<中間的字元串替換為我的字元串比如world
具體例子:
比如要替換第128行
sed -i '128s/>.*</>world</' test.txt
這樣子
C. 總結linux替換字元串的幾種方法
一)通過vi編輯器來替換。
vi/vim 中可以使用 :s 命令來替換字元串。
:s/well/good/ 替換當前行第一個 well 為 good
:s/well/good/g 替換當前行所有 well 為 good
:n,$s/well/good/ 替換第 n 行開始到最後一行中每一行的第一個 well 為 good
:n,$s/well/good/g 替換第 n 行開始到最後一行中每一行所有 well 為 good
n 為數字,若 n 為 .,表示從當前行開始到最後一行
:%s/well/good/(等同於 :g/well/s//good/) 替換每一行的第一個 well 為 good
:%s/well/good/g(等同於 :g/well/s//good/g) 替換每一行中所有 well 為 good
可以使用 # 作為分隔符,此時中間出現的 / 不會作為分隔符
:s#well/#good/# 替換當前行第一個 well/ 為 good/
:%s#/usr/bin#/bin#g 可以把文件中所有路徑/usr/bin換成/bin
(二)直接替換文件中的字元串。(此法不用打開文件即可替換字元串,而且可以批量替換多個文件。)
1.perl命令替換,參數含義如下:
-a 自動分隔模式,用空格分隔$_並保存到@F中。相當於@F = split 」。分隔符可以使用-F參數指定
-F 指定-a的分隔符,可以使用正則表達式
-e 執行指定的腳本。
-i<擴展名> 原地替換文件,並將舊文件用指定的擴展名備份。不指定擴展名則不備份。
-l 對輸入內容自動chomp,對輸出內容自動添加換行
-n 自動循環,相當於 while(<>) { 腳本; }
-p 自動循環+自動輸出,相當於 while(<>) { 腳本; print; }
用法示例:
perl -p -i.bak -e 's/foo/bar/g' *.c
將所有C程序中的foo替換成bar,舊文件備份成.bak
perl -p -i -e "s/shan/hua/g" ./lishan.txt ./lishan.txt.bak
將當前文件夾下lishan.txt和lishan.txt.bak中的「shan」都替換為「hua」
perl -i.bak -pe 's/(d+)/ 1 + $1 /ge' file1 file2
將每個文件中出現的數值都加一
2.sed命令下批量替換文件內容
格式: sed -i "s/查找欄位/替換欄位/g" `grep 查找欄位 -rl 路徑` 文件名
-i 表示inplace edit,就地修改文件
-r 表示搜索子目錄
-l 表示輸出匹配的文件名
s表示替換,d表示刪除
示例:sed -i "s/shan/hua/g" lishan.txt
把當前目錄下lishan.txt里的shan都替換為hua 各個Linux詳細命令介紹及應用可如下進行查找
D. linux 將字元串中的斜線替換成空格
1. 如果是文件中的替換:sed -i "s/字元串/\ /g" 文件名
2.如果是vi中的替換是:%s/字元串/ /g 然後回車