如何使用sed捕获正在运行的vm目录?

时间:2015-08-09 17:39:58

标签: linux shell command-line sed

我有这个命令打印出正在运行的虚拟机的所有信息。我真正需要的只是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

1 个答案:

答案 0 :(得分:1)

将您的上一个sed更改为:

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

-n将禁止除了与此模式匹配的所有其他行。

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

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