Wenn Sie Linien gehen durch awk
verwenden, wird das Feldtrennzeichen verwendet, bevor der Datensatz verarbeitet. awk
liest den Datensatz gemäß den aktuellen Werten von FS
und RS
und fährt mit der Ausführung der Operationen fort, für die Sie ihn anfordern.
Das heißt, wenn Sie beim Lesen eines Datensatzes den Wert FS
einstellen, hat dies keine Auswirkungen auf diesen spezifischen Datensatz. Stattdessen für das nächste und darüber hinaus.
Also, wenn Sie eine Datei wie diese:
$ cat a
1,2 3,4
5,6 7,8
Und Sie setzen das Feldtrenn während eines Datensatz zu lesen, dauert es ab der nächsten Zeile:
$ awk '{FS=","} {print $1}' a
1,2
5
Also, was Sie wollen zu tun ist, die FS
vor dem Lesen der Datei zu setzen. Das heißt, in dem BEGIN-Block oder über den Parameter:
$ awk 'BEGIN{FS=","} {print $1}' a
1
5
$ awk -F, '{print $1}' a
1
5
Es gibt auch eine andere Art und Weise: kann awk
den vollständigen Datensatz neu berechnen. Damit nehmen awk
Konto in den aktuellen FS
und entsprechend handeln:
$ awk '{FS=","} {$0=$0;print $1}' a
1
5
Angenommen, meine ersten Zeile ist 'Cal_Tno_V19_F04_R02'. Wie benutzt man 'awk', um' Cal_Tno' zu drucken, dh die ersten 2 Felder mit Trennzeichen zu drucken? – Sigur
@Sigur das scheint eine völlig andere Frage zu sein, was ich hier beantwortete. Es ist besser, wenn Sie [eine neue Frage stellen] (/ fragen/stellen) genügend Details zur Verfügung stellen! – fedorqui