Meine Dummy-Datei sieht folgendermaßen aus:
C1 C2 C3
1 a snow
2 b snowman
snow c sowman
Ich möchte eine Zeile erhalten, wenn snow
in $ 3 ein String enthalten ist . Ich kann das so machen:
awk '($3=="snow" || $3=="snowman") {print}' dummy_file
Aber es sollte einen einfacheren Weg geben.
'$3~/snow/'
Möglich auch durch Suche nach Teilzeichenfolgen mit der Funktion index ():
awk '(index($3, "snow") != 0) {print}' dummy_file
Kürzere Version:
awk 'index($3, "snow")' dummy_file
quelle
awk 'index($3, "snow")' dummy_file
Vielleicht hilft das
http://www.math.utah.edu/docs/info/gawk_5.html
awk '$3 ~ /snow|snowman/' dummy_file
quelle
Drucken Sie Zeilen, in denen das dritte Feld entweder
snow
odersnowman
nur:awk '$3~/^snow(man)?$/' file
quelle
GNU sed
sed '/\s*\(\S\+\s\+\)\{2\}\bsnow\(man\)\?\b/!d' file
Eingang:
..Ausgabe:
quelle
sed
ganze Wörter zu verwenden. Obwohl dies technisch möglich war, musste ich, damit dies zuverlässig funktioniert, sowohl Look-Behind-, Look-Forward- als auch!?
Konstruktionen verwenden, wenn es um Wörter ging, die nicht folgen sollten. Das ist nichts für schwache Nerven, das ist sicher. (Und anfällig für Fehler, die viel Zeit in