我想找到一个词在文本文件中出现的位置——就像一个词出现在文本中的词数——对于那个词的所有实例,但我什至不知道从哪里开始。我想我需要一个循环,以及 grep 和 wc 的某种组合。
例如,这是一篇关于 iPhone 11 的文章:
周二,该公司表示,其入门级手机 iPhone 11 的起售价为 700 美元,而去年同类机型的起价为 750 美元,这表明苹果正在关注那些不会竞相购买更昂贵手机的消费者。年。
苹果将其更高级机型 iPhone 11 Pro 和 iPhone 11 Pro Max 的起售价维持在 1,000 美元和 1,100 美元。该公司在其硅谷园区举行的 90 分钟新闻发布会上推出了新手机。
课文共81个字。
jaireaux@macbook:~$ wc -w temp.txt
81 temp.txt
Run Code Online (Sandbox Code Playgroud)
“iPhone”这个词出现了 3 次。
jaireaux@macbook:~$ grep -o -i iphone temp.txt | wc -w
3
Run Code Online (Sandbox Code Playgroud)
我想要的输出是这样的:
jaireaux@macbook:~$ whereword iPhone temp.txt
24
54
57
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能得到那个输出?
我有一个文本文件 Fred.txt:
% cat -e fred.txt
00:$
00:04:$
01:00:23:34$
01:$
01:40:$
01:40:32:$
%
Run Code Online (Sandbox Code Playgroud)
我可以 grep 查找包含 2 位数字和冒号的行:
% pcregrep -e '[\d]{2}:' fred.txt
00:
00:04:
01:00:23:34
01:
01:40:
01:40:32:
%
Run Code Online (Sandbox Code Playgroud)
但是当我尝试获取该模式的重复模式时,它找不到它们:
% pcregrep -e '[[\d]{2}:]{2}' fred.txt
%
Run Code Online (Sandbox Code Playgroud)
我希望获得与此相同的输出:
% pcregrep -e '[\d]{2}:[\d]{2}:' fred.txt
00:04:
01:00:23:34
01:40:
01:40:32:
%
Run Code Online (Sandbox Code Playgroud)
最终,我将在更大的文件中寻找更多嵌套的重复模式,因此我不想每次重复模式时都进行定义。如何 grep 查找重复该模式的行?