linux - 如何通过使用 grep 和 find 命令替换字符串来更新文件的内容
问题描述
我在特定子目录下找到包含“负责任”字样的 XML 文件。搜索工作正常,如下所示。
find . -name '*.xml' -exec grep -H 'responsible' {} \;
./dir1/d1.xml<responsible><></responsible>
./dir2/d2.xml<responsible><SYSTEM></responsible>
./dir3/d3.xml<responsible><SYSTEM></responsible>
... 等等。
有没有办法可以用空白替换所有出现的 SYSTEM。
我正在寻找的结果是:
./dir1/d1.xml<responsible><></responsible>
./dir2/d2.xml<responsible><></responsible>
./dir3/d3.xml<responsible><></responsible>
解决方案
我会用 perl pie
perl -p -i -e 's/<responsible><SYSTEM><\/responsible>/<responsible><><\/responsible>/' `find ./ -name *.xml`
推荐阅读
- node.js - 节点错误:“SyntaxError: Unexpected token {” at “const {join, basename} = require('path')”
- node.js - 在 Google Cloud Run 中使用默认凭据的域范围委派
- html - BeautifulSoup4 和 Python - 多个页面进入 DataFrame
- r - 使用 sunburstR 显示除 'size' 以外的值
- java - 如何更好地实现我的 5x5 按钮网格拼图,使用 2D 数组激活网格上的周围按钮?
- runtime-error - 如何修复筛子上的运行时错误,运行时错误是有符号整数溢出:46349*46349?
- tensorflow - conda 安装带有 mkl(avx/avx2 支持)的 Tensorflow 2.1 不起作用
- docker - 如何在 alpine docker 上安装有效的 Perl Cassandra 客户端
- sql-server - SSAS - 数据源:最大连接数不工作
- cmake - 导入目标的 target_link_directories