Wie rendert man mit awk oder einer Alternative zwei Spalten und behält dabei alle Leerzeichen nach der ersten Spalte bei?

Wie rendert man mit awk oder einer Alternative zwei Spalten und behält dabei alle Leerzeichen nach der ersten Spalte bei?

Meine Ausgabe besteht aus für Menschen lesbaren Zahlen mit einem Leerzeichen, gefolgt von Verzeichnisnamen:

Ich verwende derzeit ...

awk '{ printf "%-20s %-40s\n", $1, $2 }'

Eingang

1G foo
1.5M foo baz 
5K foo spaces in this directory

Ausgabe

1G    foo
1.5M  foo 
5K    foo 

gewünscht

1G    foo
1.5M  foo baz 
5K    foo spaces in this directory

Wie kann ich mit awk oder einer Alternative in zwei Spalten mit Leerzeichen als Trennzeichen aufteilen und dabei alle Leerzeichen in der zweiten Spalte beibehalten?

Antwort1

Versuche dies:

$ awk '{ printf "%-20s ", $1; $1=""; print $0 }' input 
1G                    foo
1.5M                  foo baz
5K                    foo spaces in this directory

Das Zurücksetzen der führenden Spalten auf eine leere Zeichenfolge ist der übliche Trick, um alle verbleibenden Felder/Spalten zu drucken.

verwandte Informationen