Szöveges fájlom van:
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
és I pontosan meg akar egyezni deiauk
. Amikor ezt csinálom:
grep "deiauk" file.txt
Ezt az eredményt kapom:
deiauk 1611516 afsdf 765 deiauk1 sdfsfdsfs 1561 51 deiauk2 115151 5454 4
de én csak erre van szükség:
deiauk 1611516 afsdf 765 deiauk 1611516 afsdf ddfgfgd
Tudom, hogy van “sa -w
opció, de akkor a karaktersorozatomnak egésznek kell lennie sor.
Megjegyzések
Válasz
Próbálja ki az alábbiak egyikét:
grep -w "deiauk" textfile grep "\<deiauk\>" textfile
Megjegyzések
- Ha van kötőjel ( – ) a karakterlánc végén, ez a szkript ennek eredményeként hozza meg, ami nem várható. rt: A szavak csak alfa karaktereket, számokat és aláhúzásokat tartalmaznak, így ha rövidítéseket vagy más kötőjeleket tartalmaz, ez nem működik.
- @Cyrus A másodikat a vi / vim
*
parancs szavakra. - Nem működik egyetlen speciális karakter esetében sem, például
org.apache.avro avro
a (a * -al próbálkozott) - A
-wE
használatához adja meg a pontos értéket Több szó egyezése (logikai VAGY)
Válasz
Próbálja ki ezt a GNU-val grep
és jelölje meg a szóhatárokat \b
:
grep "\bdeiauk\b" file
Kimenet:
deiauk 1611516 afsdf 765
Lásd: http://www.regular-expressions.info/wordboundaries.html
Megjegyzések
- Köszönöm, de miért nem működik ez nekem?
echo "Enter login: " $vard
grep -E "$\bvard\b" file.txt
- Próbálja ki a
grep "\b${vard}\b" file.txt
- még mindig nem működik ' t: /
- Önnek ' szüksége lesz
read
:read -p "Enter login: " vard; grep "\b${vard}\b" file.txt
Válasz
Ha a grep
támogatja a -P
(PCRE) funkciókat, megteheti:
$ grep -P "(^|\s)\Kdeiauk(?=\s|$)" file.txt deiauk 1611516 afsdf 765 deiauk 1611516 afsdf ddfgfgd
Megjegyzések
- Ez az egyetlen válasz, amely elválasztott szavakkal működik.
- Miért
\K
( PCRE reset a meccs kezdete) szükséges? Úgy tűnik, hogy ez a javasolt megoldás jól működik anélkül.
Válasz
Valódi adataitól függően keresse meg a szót, amelyet szóköz követ:
grep "deiauk " file.txt
Ha tudja, hogy a sor elején kell lennie, ellenőrizze:
grep "^deiauk " file.txt
Megjegyzések
- Sajnos az ezen kívüli összes válasz helytelen.
- @Shatu köszi! Tehát hadd ' s lássa, mennyi időbe telik, amíg " buborékzik a felső " … Kíváncsi vagyok ', mert szeretek válaszokat adni a régi kérdésekre … Azt hiszem, feltételezzük, hogy igen, de kétlem. Csak jó lenne nekem, de valóban hasznos lenne az olvasók számára. Annak érdekében, hogy ez jó példa legyen, megkérhetném, hogy írjon egy megjegyzést, összefoglalva, hogy mi hiányzik a többi válaszból?
- (1) Gratulálok a 10 000 rep eléréséhez. Most megvan a kiváltsága, hogy láthassa, hogy ezt a választ korábban megadták és törölték. (2) Mindig jobb, ha a kérdésre a lehető legszélesebb körben válaszolunk, az elmondottak alapján , és nem adunk olyan választ, amely csak a minta adataihoz használható. A kérdésben szereplő példaadatokból kitűnik, hogy az oszlopokat szóközök választják el – de ez nincs megadva. Az összes többi válasz a tabulátorral elválasztott oszlopoknál is működik. (3) A
^
hozzáadásával elkerülte a tachomi (törölt) válaszának végzetes hibáját – de az összes többi válasz működik… (folytatás) - ( Folytatás)… ha a karakterlánc nem az első mezőben jelenik meg. (4) Az összes többi válasz akkor is működik, ha a deiauk az utolsó mező (azaz nincs utána semmi).
Válasz
Úgy találtam, hogy a -x
bevált.
Példa
$ grep -inx -d skip "favicon.ico" * test.txt:1:favicon.ico
Grep kézikönyv
-x, --line-regexp Select only those matches that exactly match the whole line. For a regular expression pattern, this is like parenthesizing the pattern and then surrounding it with ^ and $.
Megjegyzések
- 1: 1 arányban a kötőjeleket tartalmazó egész sor
-x
az egyetlen lehetőség. Például agrep -w "abc" <<<"abc-hac101-bb0"
egyezik, de agrep -x "abc" <<<"abc-hac101-bb0"
nem
grep -w
programot? (Ez a lehetőség pontosan erre a célra szolgál , és ez nekem is működik.) – Megjegyzés: a-x
opció megegyezik az egész sorral.deiauk
/ " Csak erre van szükségem:deiauk 1611516 afsdf 765
" – melyikre van szüksége?