0

我有一个应用程序,我想在其中获取几个包的 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 原生的方法都可以。

4

1 回答 1

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}"}
于 2013-07-03T12:56:52.530 回答