Shell命令查找在文本文件的单行上出现的最长连续连续重复的图案/单词

时间:2019-09-23 10:25:58

标签: shell unix grep

在文本文件的一行上出现的最长连续连续重复图案(例如:“ ABC”)是什么?

我认为我需要对grep使用正则表达式(regex)匹配。但是我无法找到正确的说法。

$ grep'[“ pattern”] +'file.txt

必须返回指定模式的单行上最长的连续简单重复

2 个答案:

答案 0 :(得分:0)

如果您只想要匹配的文本。

$ cat file.txt 
ABC
OTHER ABCABCABC OTHER
ABCABC
$ grep -f <(grep -oE "(ABC)+" file.txt | sort | tail -1) file.txt
OTHER ABCABCABC OTHER

答案 1 :(得分:0)

awk版本:

awk '{for (i=1;i<=NF;i++) {n=split($i,a,"ABC")-1;if(n>x) {c=$0;x=n}}} END {if (c) print c}' file
OTHER ABCABCABC OTHER

它对每个字段进行测试,并进行测试,看看有多少ABC。如果它比其他行多,请存储该行并最终打印。