如何使用Shell删除包含某些字符串的行?

时间:2016-11-04 03:50:46

标签: shell text-processing

我使用Ubuntu运行自动化测试,需要处理文本日志文件,如下面的

INVITE INVITE sip:88787@10.1.1.100:5060 SIP/2.0
INVITE SIP/2.0 100 Trying
1154845 NOTIFY  NOTIFY sip:1@10.1.1.19:5065 SIP/2.0
1154845 NOTIFY  NOTIFY SIP/2.0 200 OK
INVITE SIP/2.0 180 Ringing

我想用" NOTIFY"删除2行。并获取下面的日志文件,我是Shell的新手并尝试了一些谷歌,但没有找到方法,请你分享一下如何做到这一点?谢谢!

INVITE INVITE sip:88787@10.1.1.100:5060 SIP/2.0
INVITE SIP/2.0 100 Trying
INVITE SIP/2.0 180 Ringing

2 个答案:

答案 0 :(得分:3)

尝试以下方法:

grep -v "NOTIFY" filename.txt

Grep通常用于打印与特定模式匹配的行,但“-v”选项允许反转匹配;删除与模式匹配的行。

可以找到更多信息here

答案 1 :(得分:1)

awk方式:

awk '!/NOTIFY/ {print $0}' filename

<强>解释

awk打算打印由$0表示的行,如果该行包含/NOTIFY/所示的NOTIFY。由于我们不想包含包含NOTIFY的行,因此我们在匹配前添加!,如下所示:!/NOTIFY/

-

sed尝试:

sed -n '/NOTIFY/!p' filename
相关问题