将长输出分成两列

将长输出分成两列

是否有一个简单的实用程序或脚本可以将我的某个脚本的输出列化?我有某种形式的数据:

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每隔一行(我当前脚本的作用)。有任何想法吗?谢谢!

答案1

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

答案2

要对输出进行分列,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
...

答案3

您可以将文件分成两部分(行数相同或第一个文件多一行),然后执行以下操作:

paste file1 file2

如果行的长度差异太大,则可能需要使用 printf 通过用空格填充来调整长度。

答案4

您可以简单地使用columns

$ cat test.txt | columns
A aldkhasdfljhaf             B klajsdfhalsdfh             C salkjsdjkladdag
D lseuiorlhisnflkc           E sdjklfhnslkdfhn            F kjhnakjshddnaskjdh

笔记:该命令是我的 Fedora 14 系统上的软件包columns的一部分。autogen

$ rpm -qf /usr/bin/columns
autogen-5.9.4-7.fc12.x86_64

参考

相关内容