возвращая все предложение, а не только строку - PullRequest
2 голосов
/ 13 июня 2011

grep показывает строки, в которых найдено слово для поиска. У меня есть текстовый файл, где нет разрыва строки и весь текст находится на одной строке. Есть ли способ дать команду grep показывать содержимое слева и справа (так же, как -after, -forefore)?

Я хотел бы увидеть все предложение. Слова между 2 фуллстопами. (то есть предложение, в котором найдено слово)

Ответы [ 3 ]

2 голосов
/ 13 июня 2011

Используйте awk с точкой в ​​качестве разделителя записей и фильтруйте записи по требуемому шаблону:

awk -v RS="." '/pattern/' file

Что является сокращением для:

awk -v RS="." '/pattern/{print}' file
1 голос
/ 13 июня 2011

Вы можете временно нарезать текст на строки:

cat text.txt | sed 's/\./.\n/g' | grep pattern
0 голосов
/ 15 июня 2011

Попробуйте это:

grep -o '[^.]*word[^.]*\.' file
...