Как найти строки в файле без ровно 35 вхождений символа? - PullRequest
1 голос
/ 23 октября 2011

Как я могу использовать sed, чтобы найти все строки, которые не имеют ровно 35 вхождений "|" символ

Если я не могу использовать sed, что я могу использовать?

Ответы [ 2 ]

7 голосов
/ 23 октября 2011

Я бы использовал awk, так как он более читабелен и не содержит неприятного синтаксиса регулярных выражений:

awk -F'|' 'NF != 36' filename

Или grep:

grep -v '^\([^|]*|\)\{35\}[^|]*$' filename

Но если выхочу использовать sed:

sed '/^\([^|]*|\)\{35\}[^|]*$/d' filename
1 голос
/ 23 октября 2011

Вот что вы можете попробовать:

perl -ne 'print unless (split(/|/, $_)==36);' your_input_file

Разбивает каждую строку на | и подсчитывает количество полученных частей. Если их 36, у вас 35 | и строка не печатается. В противном случае строка печатается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...