将一列拆分为多列并格式化输出

将一列拆分为多列并格式化输出

我想将 /etc/passwd 中的用户名输出打印到多列中。我的服务器的输出是

[root@master vdabas]# cat -n /etc/passwd |切-f1-d“:”

 1  root
 2  bin
 3  daemon
 4  adm
 5  lp
 6  sync
 7  shutdown
 8  halt
 9  mail
10  operator
11  games
12  ftp
13  nobody
14  systemd-network
15  dbus
16  polkitd
17  sshd
18  postfix
19  vdabas
20  vani
21  delhi

我希望输出如下:

 1  root            8  halt             15  dbus
 2  bin             9  mail             16  polkitd
 3  daemon          10 operator         17  sshd
 4  adm             11 games            18  postfix
 5  lp              12 ftp              19  vdabas
 6  sync            13 nobody           20  vani
 7  shutdown        14 systemd-network  21  delhi

答案1

您可以使用该pr命令将格式设置为 3 列 ( -3),省略分页 ( -T):

cat -n /etc/passwd | cut -f1 -d":" | pr -T -3

也许

awk -F: '{print NR,$1}' /etc/passwd | pr -T -3

答案2

在 macOS(也许还有其他 BSD 风格)下使用

 pr -t -3

(小写“t”)

在您的特殊情况下,如果您的输入位于文件 list.txt 中

pr -3 -l7 list.txt

会做的工作。如前所述,对于我的 BSDish macOS“pr”命令。 (请注意,如果 -l 参数的总和不大于标头和尾部深度的总和,选项 -l 会自动抑制标头)

相关内容