2013-02-24 63 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' '{}' ';'