我已经设法通过使用 grep 关键字的出现
grep "KeyWord" . -r -n -i -I
Run Code Online (Sandbox Code Playgroud)
但是,KeyWord 出现的次数太多了。我只想删除包含该词的所有行。
我四处搜索, sed 看起来像是实用程序。谁能告诉我什么命令可以解决问题?
谢谢。
Pie*_*ier 26
使用 GNU sed:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
Run Code Online (Sandbox Code Playgroud)
使用 OSX sed:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
Run Code Online (Sandbox Code Playgroud)
第一个命令find查找所有标准文件(不是目录、管道等),将它们分开打印\0(因此文件名可以包含空格、换行符等)。
第二个命令xargs读取 的输出find,根据分隔符(\0因为-0)抓取一个列表,sed -i [...]从列表中添加参数调用(sed如果有很多文件,将被多次调用,因为参数的最大长度在每次调用)。
该sed命令就地修改 ( -i)。
至于/KeyWord/d,它将删除包含正则表达式的行KeyWord。
您应该学会sed正确理解(简单但不寻常的)语法,并参考相应的联机帮助页以获取有关此处涉及的工具的更多信息。
正如我喜欢推广的那样zsh,带有扩展球体的解决方案:
sed -i /KeyWord/d **/*(.)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17797 次 |
| 最近记录: |