awk または代替手段を使用して、最初の列の後のすべての空白を保持したまま 2 つの列をレンダリングするにはどうすればよいですか?

awk または代替手段を使用して、最初の列の後のすべての空白を保持したまま 2 つの列をレンダリングするにはどうすればよいですか?

私の出力は、人間が読める数字と、それに続く 1 つのスペースでディレクトリ名として表示されます。

現在使用しています...

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

入力

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

出力

1G    foo
1.5M  foo 
5K    foo 

望ましい

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

awk または代替手段を使用して、2 番目の列のすべての空白を保持しながら、空白区切り文字を使用して 2 つの列に分割するにはどうすればよいですか?

答え1

これを試して:

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

残りのフィールド/列をすべて印刷するには、先頭の列を空の文字列にリセットするのが通常の方法です。

関連情報