【问题标题】:How do I capture the running vm directory using sed?如何使用 sed 捕获正在运行的 vm 目录?
【发布时间】:2015-11-01 15:05:02
【问题描述】:

我有这个命令可以打印出正在运行的虚拟机的所有信息。我真正需要的只是 vm 正在运行的目录。

这是我到目前为止所得到的。

VBoxManage list runningvms | grep vip-quickstart | awk -F ' ' '{print $1}' | xargs VBoxManage showvminfo | sed '/\'srv\', Host path: (.*)\'$/p'

这是输出

Name: 'srv', Host path: '/Users/me/MyProjects/project/vip-quickstart' (machine mapping), writable
Name: 'srv_www_wp-content_themes_vip', Host path: '/Users/me/MyProjects/project/theme' (machine mapping), writable
Name: 'project', Host path: '/Users/me/MyProjects/project/' (machine mapping), writable
Name: 'tmp_vagrant-puppet_manifests-846018e2aa141a5eb79a64b4015fc5f3', Host path: '/Users/me/MyProjects/project/vip-quickstart/puppet/manifests' (machine mapping), writable
Name: 'tmp_vagrant-puppet_modules-c332b5484a483ddd4cb97b359aa0eb4f', Host path: '/Users/me/MyProjects/project/vip-quickstart/puppet/modules' (machine mapping), writable

但我想要的只是这一行的/Users/me/MyProjects/project/vip-quickstart

Name: 'srv', Host path: '/Users/me/MyProjects/project/vip-quickstart' (machine mapping), writable

【问题讨论】:

  • 顺便说一句,grep 'foo' | awk '{ bar }' 基本上总是better 写成awk '/foo/ { bar }'

标签: linux shell command-line sed


【解决方案1】:

将您最后的 sed 更改为:

sed -n "/'srv', Host path: /p"

-n 将抑制除与此模式匹配的行之外的所有其他行。

编辑:要打印匹配的目录路径,请使用:

sed -nr "s/.*'srv', Host path: '([^']+)'.*/\1/p"

【讨论】:

  • 感谢您的回答如果我只想获取目录怎么办?
  • 我试过了,没用sed -n "/'srv', Host path: (.*)\1/"
  • 那么你可以使用:sed -nr "s/.*'srv', Host path: '([^']+)'.*/\1/p" file
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2015-08-06
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 1970-01-01
相关资源
最近更新 更多