Ich habe den folgenden Code in einer Datei mit dem Namen awktest1.awk
:
#!/bin/awk -f
BEGIN{print "start"}
{print $2, "\t", $5}
END{print "end"} employee.txt
wo employee.txt
enthält die folgenden Daten:
100 Thomas Manager Sales $5,000
200 Jason Developer Technology $5,500
300 Sanjay Sysadmin Technology $7,000
400 Nisha Manager Marketing $9,500
500 Randy DBA Technology $6,000
Ich führe den awk
Befehl wie folgt aus:
awk -f awktest1.awk
aber es druckt nur start
und endet nicht. Kann mir jemand helfen, was ich hier falsch mache?
shell-script
awk
Saket Agarwal
quelle
quelle
print $2, "\t", $5
Gegensatz zuprint $2 "\t" $5
schreiben Sie das 2. Feld, gefolgt von OFS (Leerzeichen), TAB, OFS und dem 5. Feld.Antworten:
Der Fehler gibt den Dateinamen an, der im Skript verarbeitet werden soll. Sie sollten es
employee.txt
aus dem Skript entfernen und wie folgt ausführenoder sogar, wenn das Skript ausführbar ist,
Das Skript wird
Wie es ist,
awk
wird von der Standardeingabe für die Eingabe warten , von einer Datei anstatt zu lesen. Deshalb endet es nie ...quelle
Um die Antwort von @ Stephen zu ergänzen
awk
, würden Sie schreiben , wenn Sie den Namen der Eingabedatei im Skript fest codieren möchten:Für mehrere Dateien:
quelle
Wenn Sie den Dateinamen nicht
employee.txt
als Befehlszeilenargument übergeben möchten , können Sie Folgendes tun:Code:
quelle