【发布时间】:2013-02-09 18:18:37
【问题描述】:
我正在尝试替换
</url></loc>
与
</loc></url>
在我所有的文件中,但似乎没有任何效果。有没有办法通过命令行、perl 等来做到这一点?任何帮助将不胜感激。
【问题讨论】:
标签: perl shell command-line ssh command
我正在尝试替换
</url></loc>
与
</loc></url>
在我所有的文件中,但似乎没有任何效果。有没有办法通过命令行、perl 等来做到这一点?任何帮助将不胜感激。
【问题讨论】:
标签: perl shell command-line ssh command
find . -type f -name "yourname*" -exec sed -i 's/<\/url><\/loc>/<\/loc><\/url>/g' '{}' ';'
【讨论】:
请注意,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'
【讨论】:
使用 sed:
sed -i 's/<\/url><\/loc>/<\/loc><\/url>/g' yourfiles.*
替换其他标签:
sed -E -i 's/<\/(url|what|ever)><\/(loc|any|other)>/<\/\2><\/\1>/g' yourfiles.*
【讨论】:
查看sed:
sed -i 's|</url></loc>|</loc></url>|g' <filenames>
【讨论】: