例一:
這兩天在構(gòu)建一個運(yùn)用 的運(yùn)用用到了maven,由于project很大,足足有700多個pom.xml文件,更郁悶的是在很多pom.xml文件里都單獨(dú)指定了資源庫的 url,我須要把這些資源庫的url統(tǒng)一指定到nexus本地中央庫.
手工一個個改文件配置有點(diǎn)不太實際,所以google了一下,找到批量替換文件內(nèi)容的好要領(lǐng) ,命令結(jié)構(gòu)如下:
find -name ‘要查找的文件名’ xargs perl -pi -e ‘被替換的字符串替換后的字符串g’
下面這個例子就是將當(dāng)前目錄及所有子目錄下的所有pom.xml文件中的”http://repo1.maven.org/maven2“替換為”http://localhost:8081/nexus/content/groups/public“.
find -name ‘pom.xml’ xargs perl -pi -e ‘shttp://repo1.maven.org/maven2http://localhost:8081/nexus/content/groups/publicg’
這里用到了Perl語言,
perl -pi -e
在Perl 命令中加上-e 選項,后跟一行代碼,那它就會像運(yùn)行一個普通的Perl 腳本那樣運(yùn)行該代碼.
從命令行中運(yùn)用 Perl 能夠幫助實現(xiàn)一些強(qiáng)大的、實時的轉(zhuǎn)換。認(rèn)真研究正則表達(dá)式,并正確地運(yùn)用,將會為您省去大量的手工編輯工作。
例二:
常常查找匹配或替換多個文件中的關(guān)鍵字,可以用sed也可以用perl
sed -i -e ’s/aaa/bbb/g’ *
perl -p -i -e ’s/aaa/bbb/g’ *
或者用find傳遞參數(shù)
find ./ -name “*html” | xargs -n 1 sed -i -e ’s/aaa/bbb/g’
例三:
假如要將當(dāng)前目錄下的所有文件中的windows替換成linux,可以執(zhí)行
find -type f | xargs perl -i -pe s%windows%linux%g
如果要匹配一個特定的參數(shù),可以用perl,例如
perl -0ne ‘print “$2t $1 ” while (/([^<]*)/g)’ *.html