Mam plik tekstowy:
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
i chcę dokładnie dopasować deiauk
. Kiedy to zrobię:
grep "deiauk" file.txt
Otrzymuję ten wynik:
deiauk 1611516 afsdf 765
deiauk1 sdfsfdsfs 1561 51
deiauk2 115151 5454 4
ale potrzebuję tylko tego:
deiauk 1611516 afsdf 765
deiauk 1611516 afsdf ddfgfgd
Wiem, że istnieje -w
opcja, ale wtedy mój sznur musi przeciąć całą linię.
grep -w
? (Ta opcja jest właśnie do tego celu i działa dla mnie.) - Uwaga: opcja-x
pasuje do całej linii.deiauk
/ „ Potrzebuję tylko tego:deiauk 1611516 afsdf 765
” - którego potrzebujesz?Odpowiedzi:
Wypróbuj jedną z:
źródło
*
komendy vi / vim do słów.org.apache.avro avro
ochotęorg.apache.avro avro+mapred
( na przykład *)Wypróbuj to z GNU
grep
i zaznacz granice słów\b
:Wynik:
Zobacz: http://www.regular-expressions.info/wordboundaries.html
źródło
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
Jeśli Twoje
grep
wsparcie-P
(PCRE), możesz:źródło
W zależności od rzeczywistych danych możesz poszukać słowa, po którym następuje spacja:
Jeśli wiesz, że musi to być na początku linii, sprawdź, czy:
źródło
^
- ale wszystkie pozostałe odpowiedzi działają… ( ciąg dalszy )