命令行查找&更换

时间:2013-02-24 14:45:24

标签: perl shell command-line ssh command

我正在尝试替换

</url></loc>

</loc></url>

在我的所有文件中但似乎没有任何效果。有没有办法通过命令行,perl等来做到这一点?任何帮助将不胜感激。

4 个答案:

答案 0 :(得分: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' 

答案 1 :(得分:3)

结帐sed

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

答案 2 :(得分: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.*

答案 3 :(得分:0)

find . -type f -name "yourname*" -exec sed -i 's/<\/url><\/loc>/<\/loc><\/url>/g' '{}' ';'