grep точное слово из входного файла - PullRequest
0 голосов
/ 04 августа 2020

Мои входные файлы:

  1. text.txt - файл для поиска
  2. patterns.txt - файл, содержащий список слов (по одному слову в строке), которые нужно можно искать в файле text.txt.

text.txt:

abc     def     ghi
jkl     mno     pqr ; stu
zzz     yyy     xxx
jkl     abs     abc1 ; mno
jjj     aaa     abc1M1

, а pattern.txt:

abc
pq
abc1M1

Если я do:

| => grep -f patterns.txt text.txt
abc def ghi
jkl mno pqr ; stu
jkl abs abc1 ; mno
jjj aaa abc1M1

Однако должны быть возвращены только две строки:

abc def ghi
jjj aaa abc1M1

то есть только те строки, которые соответствуют полным словам «ab c» и «abc1M1», как указано в файле patterns.txt. Как мне структурировать свой запрос?

спасибо за вашу помощь!

Изменить: Сайрус предложил попробовать опцию '-Fwf', но она все равно не дает мне того, что я хочу получить :

| => grep -Fwf patterns.txt text.txt
abc def ghi

Кроме того, я запускаю grep на моей ма c:

| => grep --version
grep (BSD grep) 2.5.1-FreeBSD

1 Ответ

1 голос
/ 04 августа 2020

С GNU grep:

grep -Fwf pattern.txt text.txt 

Вывод:

abc     def     ghi
jjj     aaa     abc1M1

-F: интерпретировать ОБРАЗЦЫ как фиксированные строки, а не как регулярные выражения.

-w: выберите только те строки, которые содержат совпадения, образующие целые слова.

См .: man grep

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