2013-02-24 106 views
0

我想在我的所有文件與命令行查找和替換

</loc></url> 

更換

</url></loc> 

,但似乎沒有奏效。有沒有辦法通過命令行,Perl等來做到這一點?任何幫助將不勝感激。

回答

3

退房sed

sed -i 's|</url></loc>|</loc></url>|g' <filenames> 
1

用sed:

sed -i 's/<\/url><\/loc>/<\/loc><\/url>/g' yourfiles.* 

要更換其他標籤:

sed -E -i 's/<\/(url|what|ever)><\/(loc|any|other)>/<\/\2><\/\1>/g' yourfiles.* 
4

注意的sed許多版本不承認-i。但是你可以做同樣的用Perl:

find . -exec perl -i -pe 's|(</url>)(</loc>)|$2$1|g' {} \; 

Perl有過一個很大的優勢的sed,它會更容易擴展爲包括分佈在多行的兩個標籤的出現。

perl -0777 -i -pe 's|(</url>)(\s*)(</loc>)|$3$2$1|g' 
0
find . -type f -name "yourname*" -exec sed -i 's/<\/url><\/loc>/<\/loc><\/url>/g' '{}' ';'