Wie wähle ich die erste Spalte aus der durch TAB getrennten Zeichenfolge aus?
# echo "LOAD_SETTLED LOAD_INIT 2011-01-13 03:50:01" | awk -F'\t' '{print $1}'
Das Obige gibt die gesamte Zeile zurück und nicht nur "LOAD_SETTLED" wie erwartet.
Aktualisieren:
Ich muss die dritte Spalte in den tabulatorgetrennten Werten ändern. Folgendes funktioniert nicht.
echo $line | awk 'BEGIN { -v var="$mycol_new" FS = "[ \t]+" } ; { print $1 $2 var $4 $5 $6 $7 $8 $9 }' >> /pdump/temp.txt
Dies funktioniert jedoch wie erwartet, wenn das Trennzeichen ein Komma anstelle eines Tabulators ist.
echo $line | awk -v var="$mycol_new" -F'\t' '{print $1 "," $2 "," var "," $4 "," $5 "," $6 "," $7 "," $8 "," $9 "}' >> /pdump/temp.txt
awk 'BEGIN {FS="\t"}; {print $1,FS,$2,FS,$3}' myFile.txt
Tabulatorgetrennte Werte der ersten drei Spalten zu drucken.
awk 'BEGIN {OFS="\t"}; {print $1,$2,$3}'
-v
Einstellen von Variablen. Die Verwendung BEGIN {FS="\t"}
in einem Inline-Programm ist hässlich , und jeder Open-Source-Beitrag, den Sie auf diese Weise leisten möchten, wird wahrscheinlich beanstandet. Tun Sie das nur, wenn Sie eine Programmdatei schreiben . Es wird auch davon abgeraten, -F
statt zu verwenden, -v FS=
da letzteres klarstellt, dass nur FS
gesetzt wird und nicht OFS
. Die Verwirrung über diesen letzten Punkt hat diesen Beitrag überhaupt erst verursacht. Deshalb ist "guter Stil" wichtig.
OFS
Variable geben Sie ein Ausgabefeldtrennzeichen an .