如何使用 awk 或替代方案渲染兩列,保留第一列之後的所有空格?

如何使用 awk 或替代方案渲染兩列,保留第一列之後的所有空格?

我的輸出採用人類可讀的數位形式,其中一個空格後面跟著目錄名稱:

我目前正在使用...

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 或替代方法使用空格分隔符號拆分為兩列,保留第二列中的所有空格?

答案1

嘗試這個:

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

將前導列重設為空字串是列印所有剩餘欄位/列的常用技巧。

相關內容