bash - 将文件重新排列成三列

标签 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 列,这意味着如果我排序这个文件,一些包的信息将被打乱。是否有一个简单的 awk 命令来获取这个每行输出和打印三个字段?

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

最佳答案

如果保证每个 不包含空格,那么这种方法可能会成功:

$ 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

关于bash - 将文件重新排列成三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18964478/

相关文章:

linux - 如何在以下示例中仅通过一个 awk/sed 命令更改 grep 和 cut 命令?

regex - 按缩进模式处理文本文件

linux - exec 3<>/dev/tcp/anyaddress.com/80 在 ash 中的等价物

linux - 获取 linux 中单词倒数第二个出现的行

用于按列名称搜索文件(.csv)的linux cmd

linux - Bash命令行重命名通配符

python - 在 databricks 集群中使用 init 脚本安装 python 包

bash - 如何使用 cut 命令 -f 标志作为反向

python - 在 BASH 中计算持续时间的优化方法

awk - 提取边列表中的特定行