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.txtTabulatorgetrennte Werte der ersten drei Spalten zu drucken.
awk 'BEGIN {OFS="\t"}; {print $1,$2,$3}'
-vEinstellen 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, -Fstatt zu verwenden, -v FS=da letzteres klarstellt, dass nur FSgesetzt wird und nicht OFS. Die Verwirrung über diesen letzten Punkt hat diesen Beitrag überhaupt erst verursacht. Deshalb ist "guter Stil" wichtig.
OFSVariable geben Sie ein Ausgabefeldtrennzeichen an .