0

我正在尝试替换

</url></loc>

</loc></url>

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

4

4 回答 4

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' 
于 2013-02-24T15:05:28.193 回答
3

签出sed

sed -i 's|</url></loc>|</loc></url>|g' <filenames>
于 2013-02-24T14:48:49.017 回答
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.*
于 2013-02-24T14:48:55.603 回答
0
find . -type f -name "yourname*" -exec sed -i 's/<\/url><\/loc>/<\/loc><\/url>/g' '{}' ';'
于 2013-02-24T17:53:01.170 回答