加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在不触及未更改的文件的情况下替换Perl中现有文件中的字符串

发布时间:2020-12-15 21:54:50 所属栏目:大数据 来源:网络整理
导读:运用 perl -pi -e 's/pattern/replacement/g' $(find src -type f) 很好,除了一件事:所有文件都被覆盖,即使没有任何匹配.这并不好,因为我经常在Emacs或Eclipse中打开它们,然后问我无聊的问题.有一种简单的方法可以防止触摸未更改的文件(在查找中使用grep的
运用
perl -pi -e 's/pattern/replacement/g' $(find src -type f)

很好,除了一件事:所有文件都被覆盖,即使没有任何匹配.这并不好,因为我经常在Emacs或Eclipse中打开它们,然后问我无聊的问题.有一种简单的方法可以防止触摸未更改的文件(在查找中使用grep的东西太多了,特别是对于复杂的模式).

解决方法

打开文件后的第一件事是取消链接,这意味着你不能对你不想修改的文件使用-i.
find src -type f -exec grep -Pl 'pattern' {} + |
   xargs perl -i -pe's/pattern/replacement/g'

当然,grep已经可以执行递归搜索,因此除非您需要使用find来过滤结果,否则您可以使用

grep -Plr 'pattern' src |
   xargs perl -i -pe's/pattern/replacement/g'

注意:cmd | xargs perl …可以处理比perl更多的文件… $(cmd).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读