2014-02-10 73 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