【问题标题】:Command Line Find & Replace命令行查找和替换
【发布时间】:2013-02-09 18:18:37
【问题描述】:

我正在尝试替换

</url></loc>

</loc></url>

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

【问题讨论】:

    标签: perl shell command-line ssh command


    【解决方案1】:
    find . -type f -name "yourname*" -exec sed -i 's/<\/url><\/loc>/<\/loc><\/url>/g' '{}' ';'
    

    【讨论】:

      【解决方案2】:

      请注意,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' 
      

      【讨论】:

        【解决方案3】:

        使用 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:

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

          【讨论】:

            猜你喜欢
            • 2022-01-09
            • 2017-03-21
            • 1970-01-01
            • 2014-09-19
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-09-19
            相关资源
            最近更新 更多