2013-07-03 84 views
0

我有一個應用程序,我想獲取幾個軟件包的RPM信息並以令人愉悅和醒目的方式進行格式化。 *繁榮*。Single Column rpm命令輸出

我的問題是,rpm想要將數據格式化爲兩列,這是煩人的。

命令

rpm -qi ruby 

結果

Name  : ruby       Relocations: (not relocatable) 
Version  : 1.8.6.36       Vendor: (none) 
Release  : 2        Build Date: Thu 18 Sep 2008 10:50:30 AM EDT 
Install Date: Thu 25 Sep 2008 12:12:53 PM EDT  Build Host: kickbench 
Group  : Development/Languages   Source RPM: ruby-1.8.6.36-2.src.rpm 
Size  : 1664035       License: Ruby License/GPL - see COPYING 
Signature : (none) 
URL   : http://www.ruby-lang.org/ 
Summary  : An interpreter of object-oriented scripting language. 
Description : [truncated] 

我想要什麼

Name  : ruby 
Relocations : (not relocatable) 
Version  : 1.8.6.36 
Vendor  : (none) 
Release  : 2 
Build Date : Thu 18 Sep 2008 10:50:30 AM EDT 
Install Date: Thu 25 Sep 2008 12:12:53 PM EDT 
Build Host : kickbench 
Group  : Development/Languages 
Source RPM : ruby-1.8.6.36-2.src.rpm 
Size  : 1664035 
License  : Ruby License/GPL - see COPYING 
Signature : (none) 
URL   : http://www.ruby-lang.org/ 
Summary  : An interpreter of object-oriented scripting language. 
Description : [truncated] 

有沒有什麼辦法讓ŧ他的格式沒有手動指定一個非常長的--queryformat

另外,任何方式來做到原生的Ruby會很好。

回答

0
pairs = %x{rpm -qi ruby} 
     .split(/(?<!:)\s{2,}(?![\s:])|#$//) 
     .map{|line| line.split(/\s*:\s+/, 2)} 
width = pairs.map{|pair| pair.first.length}.max 
pairs.each{|k, v| puts "#{k.ljust(width)}: #{v}"} 
+0

好吧。這不太好,但它回答了這個問題。我決定使用查詢格式。 – screenmutt