Warm tip: This article is reproduced from serverfault.com, please click

ubuntu-查找同一字符串的多次出现

(ubuntu - Find multiple occurences of same string)

发布于 2020-11-29 21:13:35

在一系列文件中,我想看看哪一行至少有4次是同一单词的相同出现次数。这个词可以是任何词。

所以输入:

亚伯比
oooopppyyy
战争
xxooiippzzyy

输出:

pppyyy
w ^ RRR uuiioo [R

我目前尝试的是确保将句子分开放置,以准备基本处理。

cat * |
    tr '\n' ' '|
    sed 's/[.!?;"]/ & /g' |
    sed 's/[.!?]/&\n/g'|
    grep -E -w '\b([[:alnum:]]*)\{4*\}\b'

但是我的grep却什么都没得到,所以我怎么才能得到Grep只打印出包含一个单词至少出现4次的所有句子?

Questioner
Hooiberg12
Viewed
0
Wiktor Stribiżew 2020-11-30 06:17:22

使用GNU grep,你可以使用PCRE正则表达式,例如

grep -P '\b(\w+)\b(.*\b\1\b){3}'

请参阅regex演示

在Ubuntu 18.04.4 LTS中测试:

在此处输入图片说明

细节

  • \b(\w+)\b-整个单词(捕获在第1组中)(\b是单词边界,并且\w匹配字母,数字或下划线)
  • (.*\b\1\b){3}-{3}任何\1单词的三个出现(),其值与第1组中的值相同(作为对第1组值的内联反向引用),作为整个单词(再次\b使用单词边界)。