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

标签 ubuntu sed grep

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

所以 输入:

a a a b b e e e
o o o o p p p y y y
w r r r u u i i o o r
x x o o i i p p z z y y

Output:

o o o o p p p y y y
w r r r u u i i o o r

What I have tried at the moment is to make sure that sentences are put separate, ready to be processed basically.

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

但是我的 grep 没有得到任何结果,那么我如何才能让 Grep 只打印出包含至少出现 4 次的单词的所有句子?

最佳答案

通过 GNU grep,您可以使用 PCRE 正则表达式,例如

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

请参阅regex demo .

在 Ubuntu 18.04.4 LTS 中测试:

enter image description here

详细信息

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

关于ubuntu - 查找同一字符串多次出现的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65065239/

相关文章:

linux - 查找文件中一组行中最深(正确的)的行 Unix/Linux

python - 从 ubuntu shell 执行 python 脚本

regex - 用 sed 替换正则表达式组

git - 是否可以对选项卡进行 git grep?

linux - 如何从 *Unix 命令行进行多行查找和替换?

linux - 通过减号检查两个文件之间的差异

bash - 将更新推送到多个远程服务器(Ubuntu)

ubuntu - fatal error : opencv2/photo. hpp OpenCV 3.0 安装

java - 在 ubuntu 中从终端运行 jar 文件

linux - 从Linux中的多个文件中提取文本和数字