将文件重新排列为三列

时间:2013-09-23 16:38:20

标签: bash awk

我正在尝试比较几台运行CentOS 6.4的计算机上安装的软件包列表。 yum list installed的输出没有很好地排列成三列,例如:

ImageMagick.x86_64      6.5.4.7-6.el6_2 @base     
MAKEDEV.x86_64          3.24-6.el6      @anaconda-CentOS-201303020151.x86_64/6.4
ModemManager.x86_64     0.4.0-3.git20100628.el6
                                        @anaconda-CentOS-201303020151.x86_64/6.4
NetworkManager.x86_64   1:0.8.1-43.el6  @anaconda-CentOS-201303020151.x86_64/6.4
NetworkManager-glib.x86_64
                        1:0.8.1-43.el6  @anaconda-CentOS-201303020151.x86_64/6.4

长行被包装以容纳80列,这意味着如果我sort这个文件,某些包的信息将被加扰.. 是否有一个简单的awk命令来获取此输出并打印每行三个字段?

我尝试过搜索类似的例子,但我只找到人们将一条长行拆分成列的情况。

1 个答案:

答案 0 :(得分:7)

如果确保每个都不包含空格,那么这种方法可能会起到作用:

$ yum list installed | xargs -n3 | column -t
ImageMagick.x86_64          6.5.4.7-6.el6_2          @base
MAKEDEV.x86_64              3.24-6.el6               @anaconda-CentOS-201303020151.x86_64/6.4
ModemManager.x86_64         0.4.0-3.git20100628.el6  @anaconda-CentOS-201303020151.x86_64/6.4
NetworkManager.x86_64       1:0.8.1-43.el6           @anaconda-CentOS-201303020151.x86_64/6.4
NetworkManager-glib.x86_64  1:0.8.1-43.el6           @anaconda-CentOS-201303020151.x86_64/6.4