У меня есть текстовый файл:
deiauk 1611516 afsdf 765 minkra 18415151 asdsf 4152 linkra sfsfdsfs sdfss 4555 deiauk1 sdfsfdsfs 1561 51 deiauk2 115151 5454 4 deiauk 1611516 afsdf ddfgfgd luktol1 4545 4 9 luktol 1
и я хочу точно соответствовать deiauk
. Когда я это делаю:
grep "deiauk" file.txt
Я получаю этот результат:
deiauk 1611516 afsdf 765 deiauk1 sdfsfdsfs 1561 51 deiauk2 115151 5454 4
но мне нужно только это:
deiauk 1611516 afsdf 765 deiauk 1611516 afsdf ddfgfgd
Я знаю, что есть опция -w
, но тогда моя строка должна обрабатывать всю строку.
Попробуйте один из:
grep -w "deiauk" textfile grep "\<deiauk\>" textfile
Попробуйте это с GNU grep
и отметьте границы слов с помощью \b
:
grep "\bdeiauk\b" file
Вывод:
deiauk 1611516 afsdf 765
См .: http://www.regular-expressions.info/wordboundaries.html.
В зависимости от ваших реальных данных вы можете искать слово, за которым следует пробел:
grep 'deiauk ' file.txt
Если вы знаете, что это должно быть в начале линии, проверьте:
grep '^deiauk ' file.txt
Если ваш grep
поддерживает -P
(PCRE), вы можете сделать:
$ grep -P '(^|\s)\Kdeiauk(?=\s|$)' file.txt deiauk 1611516 afsdf 765 deiauk 1611516 afsdf ddfgfgd