Shell-Script

將長輸出分成兩列

  • January 27, 2020

是否有一個簡單的實用程序或腳本來對我的一個腳本的輸出進行分欄?我有某種形式的數據:

A aldkhasdfljhaf
B klajsdfhalsdfh
C salkjsdjkladdag
D lseuiorlhisnflkc
E sdjklfhnslkdfhn
F kjhnakjshddnaskjdh

但是如果這變成了兩個長,請按以下形式寫入數據(仍然是垂直排序的):

A aldkhasdfljhaf    D lseuiorlhisnflkc
B klajsdfhalsdfh    E sdjklfhnslkdfhn
C salkjsdjkladdag   F kjhnakjshddnaskjdh

通過閱讀手冊頁,我認為這不column適合,但我不確定。拆分形式很容易:

A B 
C D 
E F

通過僅列印\n每隔一行(我目前的腳本所做的)。有任何想法嗎?謝謝!

column似乎是你想要的:

$ cat file
A aldkhasdfljhaf
B klajsdfhalsdfh
C salkjsdjkladdag
D lseuiorlhisnflkc
E sdjklfhnslkdfhn

$ column file
A aldkhasdfljhaf    D lseuiorlhisnflkc
B klajsdfhalsdfh    E sdjklfhnslkdfhn
C salkjsdjkladdag   F kjhnakjshddnaskjdh

要對輸出進行分欄,請pr轉換文本文件以進行列印:

-COLUMN, --columns=COLUMN: output COLUMN columns
     and print columns down, unless -a is used.

-t, --omit-header : omit page headers and trailers

例如

ls /etc | pr -2 -t
abrt                                gtk-2.0
acpi                                hal
adjtime                             hba.conf
agent.properties                    host.conf
aliases                             hosts
aliases.db                          hosts.allow
...

引用自:https://unix.stackexchange.com/questions/81757