2016-08-03 22 views
0

Ist es möglich, das aktuelle Feld in der Verarbeitung zu überprüfen.Awk, um das aktuelle Feld zu prüfen

awk '/pattern/{print field where pattern found}' #Howto 
+0

Was passiert, wenn mehrere Felder mit dem Muster übereinstimmen? – 123

Antwort

1
$ awk '/pattern/{for(i=1;$i!~/pattern/;i++); print i}' file 

Bei mehreren passt es nur das erste Feld des Spiels zurück. Nehmen wir es für eine Spritztour:

$ cat file 
A 1 A1g DELL 
A 1 B1s HP 
A 7 HP HP 
A 5 Jgf KIT 
A 1 Def JOP 
$ awk '/HP/{for(i=1;$i!~/HP/;i++); print i}' file 
4 
3 
+0

Eigentlich war das '/ pattern/{Beispiel}' Zeug nur ein Beispiel, ich konzentriere mich mehr auf den allgemeinen Fall – sjsam

1

Ich glaube nicht, gibt es eine eingebaute Möglichkeit, die Feldnummer in dem das Spiel stattgefunden zu bekommen, aber Sie können es tun, mit einer Schleife:

awk '{ for (i = 1; i <= NF; ++i) if ($i ~ /pattern/) print i }' file 

Dies druckt alle Felder, die dem Muster entsprechen.