Команда оболочки, чтобы найти самое длинное последовательное простое повторение шаблона / слова, встречающегося в одной строке текстового файла - PullRequest
0 голосов
/ 23 сентября 2019

Какое самое длинное последовательное простое повторение шаблона (например, «ABC»), встречающегося в одной строке в текстовом файле?

Я считаю, что мне нужно использовать совпадения регулярного выражения (регулярное выражение) с grep,Но я не могу найти правильное утверждение.

$ grep '["pattern"] +' file.txt

Должно быть возвращено самое длинное последовательное простое повторение в одной строке указанного шаблона

Ответы [ 2 ]

0 голосов
/ 23 сентября 2019

An 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 есть.Если его больше, чем в другой строке, сохраните строку и напечатайте ее в финале.

0 голосов
/ 23 сентября 2019

Если вам нужен только соответствующий текст.

$ cat file.txt 
ABC
OTHER ABCABCABC OTHER
ABCABC
$ grep -f <(grep -oE "(ABC)+" file.txt | sort | tail -1) file.txt
OTHER ABCABCABC OTHER
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...