ruby - 单列 rpm 命令输出

标签 ruby linux terminal

我有一个应用程序,我想获取多个软件包的 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 中本地实现此操作的方法都可以。

最佳答案

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}"}

关于ruby - 单列 rpm 命令输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17448087/

相关文章:

ruby-on-rails - 范围变干?

ruby-on-rails - 获取 "Unknown attribute error"有人帮忙修复吗?

image - 如何在终端中查找特定大小的图像?

ruby - 在ruby中将二进制数据转换为字符串

mysql - Ruby Mysql 无法连接到本地主机 (10061)

linux - 如何在spark上执行shell脚本

linux - 关于 mysqlimport、换行符和字符编码(我认为)

在终端(Trutle 模块)中执行 Python 脚本错误

c++ - 在 C++ 代码中执行 Linux 终端命令

c++ - 为什么 Hello world 在 vi​​m 中无法打印,但在 tty 中却可以打印?