LINUX.ORG.RU
ФорумAdmin

Обрезать вывод 'grep'

 , ,


1

2

Приветствую.

Есть текстовый файл:

$ cat file.txt
В случае несоответствия правилам сообщение может быть удалено. Текст начального сообщения темы форума или галереи может быть откорректирован модераторами и корректорами, если в нём содержатся ошибки правописания, или если форматирование сообщения некорректно. При этом стилистика сообщения и его смысл модераторами не изменяется. Тексты новостей и голосования могут быть существенно переработаны модераторами и корректорами. Какой-либо модификации комментариев модераторами не производится.

Ищу слово «ошибки» и получаю:

$ grep -i 'ошибки' file.txt
В случае несоответствия правилам сообщение может быть удалено. Текст начального сообщения темы форума или галереи может быть откорректирован модераторами и корректорами, если в нём содержатся ошибки правописания, или если форматирование сообщения некорректно. При этом стилистика сообщения и его смысл модераторами не изменяется. Тексты новостей и голосования могут быть существенно переработаны модераторами и корректорами. Какой-либо модификации комментариев модераторами не производится

Вроде всё верно. Но мне не нужен вывод всей этой строки (там может быть слов и на пару экранов), мне достаточно было бы:

содержатся ошибки правописания

Ну или плюс/минус как-то так. Но не '-o' конечно :)

Как?


Ответ на: комментарий от Yorween

А если там будет:

слово, ошибки слово
или
слово ошибки, слово
или
ошибки слово
или
слово ошибки
или другая комбинация, то ничего не найдётся, хотя искомое слово есть.

anonymous
()
Ответ на: комментарий от Yorween

\w+ - весьма сомнительно. Например, если паттерн будет в начале или в конце строки - не найдет.
Нужно просто так:

$ egrep -o ' ошибки '

Kroz ★★★★★
()
Ответ на: комментарий от Yorween

Автор темы хочет искать слово «ошибки» и выводить часть найденной строки.

Ты же написал шаблон, под который подпадает только когда искомое слово находится между двумя другими словами, разделёнными пробелами и без знаков препинания.

Если же искомое слово будет между словами со знаками препинания или стоять в начале или конце предложения, то твой шаблон не сработает.

anonymous
()
Ответ на: комментарий от quantum-troll
fmt file | grep -i ошибки

Вообще отлично. Спасибо!

egrep -o ' ошибки '

Нет, это не работает.

mexx
() автор топика

grep -Ei '\S+ ошибки \S+'

teod0r ★★★★★
()
Ответ на: комментарий от Deleted

ну как-то так да
grep -Eio '(\S+\s+){,5}ошибки(\s+\S+){,5}'

teod0r ★★★★★
()
Ответ на: комментарий от Deleted
grep -Eo '.{0,5}ошибки.{0,5}'
grep -Eio '(\S+\s+){,5}ошибки(\s+\S+){,5}'

Интересно, благодарю.

mexx
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.