2014-02-10 71 views
0

现在,我运行以下命令:如何根据字符串长度来格式化bash输出?

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 

(注意奇数标签)

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

额外的问题:

我想要做的就是找出已安装完毕,当这样我就可以卸载我最近安装了一切。我如何做得比我所做的更好?

回答

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