Ich habe eine Datei mit zwei Spalten wie unten gezeigt (Beispiel):
DATEI 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
Ich muss dies formatieren und meine erwartete Ausgabe sollte sein:
DATEI 1:
John 1
Peter 2
Michael Rod 3
Su 7
Louise 9
Michael Rod 3
das 2 Spalten und nicht 3 sind?Antworten:
Wenn die Eingabe nur zwei Spalten gewesen wäre, hätte ich vorgeschlagen, zu verwenden
column -t
. Dies funktioniert hier jedoch nicht ganz, da dascolumn
Dienstprogramm eine beliebige Anzahl von Leerzeichen oder Tabulatoren als Spaltenbegrenzer behandelt:"Michael Rod" besteht aus zwei Spalten, sodass eine einzelne Zeile eine Spalte mehr als die anderen Zeilen enthält, was die Ausgabe durcheinander bringt.
Wir können dies umgehen, indem wir vor der letzten Spalte ein Tabulatorzeichen einfügen und dieses dann
column
(nur) als Trennzeichen verwenden:In Awk
NF
ist die Anzahl der Felder (Spalten) und$NF
die Daten im letzten Feld. Das von mir verwendete Skript ändert einfach die Daten des letzten Felds, indem ein Tabulatorzeichen vorangestellt wird, bevor die gesamte Zeile gedruckt wird.Wenn Ihre Shell nicht versteht
$'\t'
, können Sie ein anderes Zeichen auswählen, das nicht Teil der Daten ist:quelle