У меня есть текстовый файл:
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
? (Эта опция предназначена именно для этой цели, и она работает для меня.) - Примечание: опция-x
соответствует всей строке.deiauk
/ « Мне нужно только это:deiauk 1611516 afsdf 765
» - что вам нужно?Ответы:
Попробуйте один из:
источник
*
команду vi / vim для слов.org.apache.avro avro
grepedorg.apache.avro avro+mapred
(попробовал с *)Попробуйте это с GNU
grep
и пометьте границы слов\b
:Выход:
Смотрите: http://www.regular-expressions.info/wordboundaries.html
источник
echo "Enter login: " $vard
grep -E "$\bvard\b" file.txt
grep "\b${vard}\b" file.txt
read
:read -p "Enter login: " vard; grep "\b${vard}\b" file.txt
Если ваша
grep
поддержка-P
(PCRE), вы можете сделать:источник
В зависимости от ваших реальных данных вы можете найти слово, за которым следует пробел:
Если вы знаете, что это должно быть в начале строки, проверьте это:
источник
^
- но все остальные ответы работают… (Продолжение)