【问题标题】:Extract a path from the output of `gem environment` using sed使用 sed 从“gem environment”的输出中提取路径
【发布时间】:2015-04-29 03:27:49
【问题描述】:

执行gem environment会返回以下输出:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
  - INSTALLATION DIRECTORY: /var/lib/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /var/lib/gems/1.8/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /var/lib/gems/1.8
     - /root/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

使用sed,如何专门提取EXECUTABLE DIRECTORY 值以检索/var/lib/gems/1.8/bin

【问题讨论】:

    标签: regex sed gem extraction


    【解决方案1】:

    您可以像这样使用管道输出到 awk:

    gem environment | awk -F ' *: *' '$1 ~ /EXECUTABLE DIRECTORY/{print $2}'
    /var/lib/gems/1.8/bin
    

    【讨论】:

      【解决方案2】:

      我认为使用sed 确实很难做到这一点,您基本上必须删除不包含EXECUTABLE DIRECTORY 的每一行,然后从其余行中删除直到冒号的所有内容。

      gem environment | sed '/EXECUTABLE DIRECTORY/!d;s/^.*: //'
      

      我会为此推荐awk

      gem environment | awk -F': *' '/EXECUTABLE DIRECTORY/ {print $2}'
      

      grep:

      gem environment |  grep -Po 'EXECUTABLE DIRECTORY: \K.*'
      

      【讨论】:

        猜你喜欢
        • 2015-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-03
        • 1970-01-01
        • 2021-11-03
        • 2013-02-20
        相关资源
        最近更新 更多