Chinaunix

标题: 请教如何用sed实现删除以某个字符开头,并且不包含另外一个关键字符的行 [打印本页]

作者: jiawei2426    时间: 2019-06-17 16:01
标题: 请教如何用sed实现删除以某个字符开头,并且不包含另外一个关键字符的行
请教如何用sed实现删除以某个字符开头,并且不包含另外一个关键字符的行:
举例如下:
原文件:
aaa bbb ccc ddd eee
aaa ggg hhh ddd mmm
aaa bbb hhh kkk mmm
nnn bbb hhh ddd eee
执行完sed命令之后的文件:
aaa bbb ccc ddd eee
aaa ggg hhh ddd mmm

nnn bbb hhh ddd eee

作者: jiawei2426    时间: 2019-06-17 16:13
已经找到解决办法:
sed -i '/^aaa/{/ddd/!d}' file
作者: cfwyy    时间: 2019-06-17 16:47
乱入一个awk的方法
  1. awk '{if(!($0 ~/^aaa/ && $0 !~/ddd/)) print}' file.txt
复制代码

作者: wh7211    时间: 2019-06-21 12:26
回复 1# jiawei2426


  1. awk 'match($0,"^aaa.+ddd|^[^a].+")' file
复制代码

作者: csccyab    时间: 2019-06-21 16:44
  1. $ sed '/^aaa/{/ddd/!s/.*//}' file
复制代码



aaa bbb ccc ddd eee
aaa ggg hhh ddd mmm

nnn bbb hhh ddd eee
作者: csccyab    时间: 2019-06-21 16:46
jiawei2426 发表于 2019-06-17 16:13
已经找到解决办法:sed -i '/^aaa/{/ddd/!d}' file

這個方法不會打第三行





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2