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

linux – 如何grep整行,传递给sed,删除行?

发布时间:2020-12-14 00:04:34 所属栏目:Linux 来源:网络整理
导读:以下命令将查找字符串的所有出现并删除找到此字符串的文件的内容. find / -maxdepth 1 -xdev -type f -exec grep -i "stringtofind" -l {} ; -exec sed -i '/./d' {} ; 我已经尝试修改它只是删除找到字符串的行但无法使其工作. 例如测试文件: blah blah b
以下命令将查找字符串的所有出现并删除找到此字符串的文件的内容.

find / -maxdepth 1 -xdev -type f -exec grep -i "stringtofind" -l {} ; -exec sed -i '/./d' {} ;

我已经尝试修改它只是删除找到字符串的行但无法使其工作.

例如测试文件:

blah blah blah
blah blah blah teststring
teststringblah blah blah
blah blah blah

它将删除第2行和第3行,并将文件保留为行之间没有间隙:

blah blah blah
blah blah blah

解决方法

这里不需要grep sed -i’/ teststring / Id’文件删除文件中包含teststring(不区分大小写)的所有行,所以只需将它与find结合使用:

find . -maxdepth 1 -xdev -type f -exec sed -i '/teststring/Id' {} ;

sed演示:

$cat file
blah blah blah
blah blah blah teststring
teststringblah blah blah
blah blah blah

$sed '/teststring/Id' file
blah blah blah
blah blah blah

(编辑:李大同)

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

    推荐文章
      热点阅读