文件中的数据:
23445 messages sent
number of messages sent by io is 245
total messages sent is 23456
message are not sent
messages sent 4321
我想提取已发送的消息'但这种模式在大多数行中 我的输出文件应该像
23445 messages sent
messages sent 4321
这里的意思是我的模式可以是行的开头或行的结尾而不是行的中间行。如何提取这些模式
答案 0 :(得分:1)
您可以将grep
与-E
标志一起使用,如下所示:
grep -E '^messages sent|messages sent$' myfile.txt
根据您的示例输入,产生:
23445 messages sent
messages sent 4321
来自man
页面:
-E, - extended-regexp 将模式解释为扩展正则表达式(即强制grep表现为egrep)
修改强>
由于您提出了这个问题,@Sriram P
通过以下评论更新了问题,询问如何排除第0 new messages sent
行。
考虑到这一点,这里有一个更新的模式,应该更好地满足原始要求,并排除0 new messages sent
:
grep -E '^([0-9]+ )?messages sent( [0-9]+)?$' myfile.txt
希望这会有所帮助:)