gpt4 book ai didi

linux - grep 显示每行出现的模式

转载 作者:IT王子 更新时间:2023-10-29 01:00:34 26 4
gpt4 key购买 nike

从输入文件:

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 是“Peter”的出现。

我试过了,但是信息的格式不是我想要的:

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 patternlike "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

关于linux - grep 显示每行出现的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31592531/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com