从输入文件:
I am Peter
I am Mary
I am Peter Peter Peter
I am Peter Peter
我希望输出是这样的:
1 I am Peter
3 I am Peter Peter Peter
2 I am Peter Peter
其中1,3和2是“彼得”的出现.
我尝试了这个,但信息没有按照我想要的方式格式化:
grep -o -n Peter inputfile
解决方法:
使用grep不容易解决这个问题,我建议将“一个工具”移到awk:
awk '$0 ~ FS { print NF-1, $0 }' FS="Peter" inputfile
输出:
1 I am Peter
3 I am Peter Peter Peter
2 I am Peter Peter
编辑
要回答评论中的问题:
What if I want case insensitive? and what if I want multiple pattern
like “Peter|Mary|Paul”, so “I am Peter peter pAul Mary marY John”,
will yield the count of 5?
如果您使用的是GNU awk,可以通过启用IGnorECASE并在FS中设置模式来实现:
awk '$0 ~ FS { print NF-1, $0 }' IGnorECASE=1 FS="Peter|Mary|Paul" inputfile
输出:
1 I am Peter
1 I am Mary
3 I am Peter Peter Peter
2 I am Peter Peter
5 I am Peter peter pAul Mary marY John
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。