Wie verwendet man ":" als awk Feldtrennzeichen?
Gegeben folgenden Befehl ein:
echo "1: " | awk '/1/-F ":" {print $1}'
warum awk Ausgabe:
1:
InformationsquelleAutor der Frage user173446 | 2010-04-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
"-F" ist ein Kommandozeilen-argument ist nicht die syntax von awk ist, versuchen Sie:
InformationsquelleAutor der Antwort Jürgen Hötzel
Wenn Sie es wollen ein Programm verwenden, können Sie die
FS
variable:Beachten Sie, dass wenn Sie es ändern, in der main-Schleife anstatt der
BEGIN
Schleife, es wirkt für die nächsten Zeile Lesen, da die aktuelle Zeile bereits aufgeteilt worden.InformationsquelleAutor der Antwort Dennis Williamson
-F
ist ein argumentawk
selbst:InformationsquelleAutor der Antwort danben
Haben Sie mehrere Möglichkeiten zum einstellen
:
als Trennzeichen:Alle sind gleichwertig und für einen zurück
1
für ein Beispiel für die Eingabe "1:2:3":InformationsquelleAutor der Antwort fedorqui
Können Sie auch einen regex verwenden Sie als Feld-separator, der folgende print "bar" durch eine regex zu setzen, die Zahl "10" als Trennzeichen.
InformationsquelleAutor der Antwort Zlemini
AWK arbeitet als text-interpreter geht linewise für das gesamte Dokument und geht fieldwise für jede Zeile also $1,$2..$n sind Verweise auf die Felder jeder Zeile($1 ist das erste Feld,$2 ist das zweite Feld und so weiter...).
Sie können definieren ein Feld-Trennzeichen mit der "-F" - Schalter unter der Befehlszeile oder innerhalb von zwei Klammern mit "FS=...".
Betrachten wir nun die Antwort von "JÜRGEN" :
Oberhalb der Grenze zwischen Feld setzen ":" wir haben also zwei fileds $1 die "1" und $2, die den leeren Raum.Nach, kommt der reguläre Ausdruck "/1/", weist Sie den filter, um die Ausgabe der ersten Feld nur, wenn der interpreter stolpern eine Zeile mit solchem Ausdruck(ich meine, 1);
Die Ausgabe von "echo" - Befehl ist eine Zeile, die beinhaltet "1", damit die filter funktionieren wird...
Beim Umgang mit dem folgenden Beispiel :
Die syntax ist etwas chaotisch und die Dolmetscher wählte zu ignorieren, Teil F ":"
und wechselte auf die Standard-splitter, die den leeren Platz so ist die Ausgabe "1:" als das erste Feld, und es wird nicht ein zweites Feld!
Die Antwort von JÜRGEN enthält die gute-syntax...
InformationsquelleAutor der Antwort jihed gasmi
Keine Notwendigkeit, dies zu schreiben, viel. Legen Sie einfach Ihre gewünschten Feld-separator mit -F-option im awk-Befehl und die Nummer der Spalte, die Sie drucken möchten getrennt wie pro Ihre erwähnte Feldtrenner.
InformationsquelleAutor der Antwort Bhavuk Taneja
Oder Sie verwenden können:
Das ist wirklich lustig-Gleichung.
InformationsquelleAutor der Antwort Vonton