如何根据字符串长度格式化bash输出?

时间:2014-02-10 20:54:39

标签: bash centos6

现在,我正在运行以下命令:

rpm -qa --queryformat '%{name}\t%{installtime:date}\n' | sort -nr

得到一些像这样的输出:

dhclient        Fri 07 Feb 2014 01:37:47 PM EST
device-mapper-persistent-data   Fri 07 Feb 2014 01:27:37 PM EST
device-mapper-libs      Fri 07 Feb 2014 01:34:44 PM EST
device-mapper   Fri 07 Feb 2014 01:34:46 PM EST
device-mapper-event-libs        Fri 07 Feb 2014 01:34:48 PM EST
device-mapper-event     Fri 07 Feb 2014 01:34:50 PM EST
dbus-libs       Fri 07 Feb 2014 01:25:28 PM EST
dbus-glib       Fri 07 Feb 2014 01:33:48 PM EST
db4-utils       Fri 07 Feb 2014 01:30:05 PM EST
db4     Fri 07 Feb 2014 01:24:58 PM EST
dash    Fri 07 Feb 2014 01:30:19 PM EST
cyrus-sasl-lib  Fri 07 Feb 2014 01:25:48 PM EST

(请注意奇数标签)

如何告诉我希望它将命令输出到具有公共间距的表中而不是指定标签数?

额外问题:

我要做的只是找出已安装的内容,以及何时卸载我最近安装的所有内容。我怎么做比我正在做的更好?

1 个答案:

答案 0 :(得分:5)

rpm -qa --queryformat '%-40{name} %{installtime:date}\n' | sort -nr
                        ^^^

这将左对齐名称并将其填充为40个字符。

如果您想按时间排序,可以先打印数字时间,以便排序。

$ rpm -qa --queryformat '%-10{installtime}   %{installtime:date}   %{name}\n' | sort -n
...
1375369678   Thu 01 Aug 2013 11:07:58 AM EDT   xorg-x11-util-macros
1375886901   Wed 07 Aug 2013 10:48:21 AM EDT   libdc1394
1378148462   Mon 02 Sep 2013 03:01:02 PM EDT   gnome-system-monitor
1384526666   Fri 15 Nov 2013 09:44:26 AM EST   perl-File-Next
1384526667   Fri 15 Nov 2013 09:44:27 AM EST   ack
1385065567   Thu 21 Nov 2013 03:26:07 PM EST   trousers
1385065568   Thu 21 Nov 2013 03:26:08 PM EST   tpm-tools
1387405750   Wed 18 Dec 2013 05:29:10 PM EST   libusb1