Zeilentrennzeichen nach Verwendung von AWK

Zeilentrennzeichen nach Verwendung von AWK
awk -F ';' '{print $1}' FileName

Ich verwende diesen Befehl, um die erste Spalte einer Datei zu drucken, die durch Semikolon getrennt ist.

Jetzt muss ich die Ausgabe des obigen Befehls durchlaufen. Wenn meine Ausgabe ist

0
1
2

Ich muss jeden Datensatz durchlaufen und die Iteration angeben, was mein Datensatztrennzeichen in meiner Ausgabe ist

Gibt es eine Möglichkeit, die Ausgabe etwa wie unten auszudrucken?

0;1;2

Damit kann ich iterieren und sagen, dass das Trennzeichen „;“ ist.

Antwort1

um ein abschließendes Semikolon zu vermeiden

 awk -F\; 'NR>1 { printf ";" ;} {printf "%s",$1;} END {printf "\n"} '
  • printfZeilenvorschub nicht drucken
  • NR>1nur nach der ersten Zeile drucken
  • ENDnach der letzten Zeile drucken.

Antwort2

awkgibt den Wert von ORS(Ausgabedatensatztrennzeichen) am Ende jeder printAnweisung aus. Standardmäßig ist es eine neue Zeile, aber Sie können es ändern:

$ cat foo.txt
0;3;6
1;4;7
2;5;8
$ awk -vORS=';' -F';' '{print $1} END {printf "\n"}'  foo.txt
0;1;2;

Ich habe es hinzugefügt, END {printf "\n"}um am Ende der Ausgabe eine neue Zeile zu erhalten.

Antwort3

Sie können auch Coreutils verwenden:

<foo.txt cut -d';' -f1 | paste -sd';'

verwandte Informationen