0

以下是gem environment命令的输出。

○ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.23
  - RUBY VERSION: 1.9.3 (2012-04-20 patchlevel 194) [x86_64-darwin10.8.0]
  - INSTALLATION DIRECTORY: /Users/userme/.rbenv/versions/1.9.3-p194/gemsets/global
  - RUBY EXECUTABLE: /Users/userme/.rbenv/versions/1.9.3-p194/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/userme/.rbenv/versions/1.9.3-p194/gemsets/global/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-10
  - GEM PATHS:
     - /Users/userme/.rbenv/versions/1.9.3-p194/gemsets/global
     - .bundle
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://rubygems.org/"]
     - "gem" => "--no-rdoc --no-ri"
  - REMOTE SOURCES:
     - http://rubygems.org/
userme at userme in ~

在行前的条带下捕获awk行的命令是什么?/Users/userme/.rbenv/versions/1.9.3-p194/gemsets/global- GEM PATHS:-/Users/userme/.rbenv/versions/1.9.3-p194/gemsets/global

4

3 回答 3

2

尝试:

$ gem env gempath
/home/mpapis/.rvm/gems/ruby-1.9.3-p286:/home/mpapis/.rvm/gems/ruby-1.9.3-p286@global

它将显示用 PATH_SEPARATOR 分隔的所有路径,这是:在 linux

于 2012-12-03T08:02:42.503 回答
2

使用awk,您可以通过以下方式管道输出:

awk '{if(e){sub (/^ *- */,"",$0);print;e=0}}/GEM PATHS/{e=1}'

它的工作原理如下:

  • ( eecho) 标志从 0 开始,因此禁用了回显。
  • 对于设置了回显标志的每一行,它首先删除<spaces>-<spaces>行开头的 ,回显修改后的行,然后重置标志。
  • 在它找到GEM PATHS一行的地方,它设置标志,以便使用前面的规则输出下一行。

以下是实际操作的小抄本:

pax> echo 'RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.23
  - GEM PATHS:
     - /Users/userme/.rbenv/versions/1.9.3-p194/gemsets/global
     - .bundle
  - GEM CONFIGURATION:
     - :update_sources => true
' | awk '{if(e){sub (/^ *- */,"",$0);print;e=0}}/GEM PATHS/{e=1}'
/Users/userme/.rbenv/versions/1.9.3-p194/gemsets/global
于 2012-12-03T08:09:33.530 回答
2

这是一种使用方法sed

sed -n '/- GEM PATHS:/ { N; s/.* - //p }' file

另一种使用方式awk,如果你熟悉使用 getline

awk '/- GEM PATHS:/ { getline; sub(/.* - /,""); print }' file

否则,这可能是您最安全的选择:

awk 'n && !--n { sub(/.* - /,""); print } /- GEM PATHS:/ { n = 1 }' file

结果:

/Users/userme/.rbenv/versions/1.9.3-p194/gemsets/global
于 2012-12-03T11:12:16.147 回答