2016-07-01 14 views
0

Angenommen, ich habe mehrere Spalten, die Ausdrücke enthalten können, die ich auswählen möchte, wenn sie übereinstimmen oder nicht übereinstimmen. Wie schreibe ich diesen awk Ausdruck? HierWie füge ich Regex-Bedingungen innerhalb eines Befehls awk hinzu

ist ein Beispiel, wo ich will nur Spalten drucken, wenn bestimmte Felder ein Spiel erhalten oder nicht:

awk -v OFS=$'\t' -F $'t\' '($12 ~ /9\..[^b-z]/) || ($4 !~ /QA_[tT][eE][sS][tT]/) || ($4 !~ /ACC_Operator1/) || ($5 !~ /4CPP/) { print $8, $5, $4, $10, $6, $12}' filename 

Ausführen dies gibt mir eine

-bash: !~: event not found 

Was ich davon ausgehen, ist eine Bash-Ausgabe mit benutzen!

Antwort

4

Sie haben einen Tippfehler, die durch das Syntax-Highlighter enthüllt wird:

awk -v OFS=$'\t' -F $'t\' ... 
        ^escaped single quote 

Dies bedeutet, dass die Öffnung Zitat Ihres awk tatsächlich die vorherige Apostroph schließen.

Beachten Sie, dass awk \t versteht, Sie können also -v OFS='\t' anstelle von $'\t' verwenden.

+0

gut Mist, dass würde es tun..haha danke – yaman

Verwandte Themen