我正在使用云环境,有一个命令将显示有关正在运行的虚拟机的所有可用信息。以下是与一台虚拟机相关的一些行的示例。
RESERVATION r-6D0F464B 170506678332 GroupD
INSTANCE i-E9B444A9 emi-376642D8 999.99.999.999 88.888.88.888 running lock_key 0 c1.xlarge 2013-06-17T18:40:56.270Z cluster01 eki-E7E242A3 monitoring-disabled 999.99.999.999 88.888.88.888 ebs
我需要能够提取 i-********
、emi-********
、IP 地址、其状态、lock_key
、c1.xlarge
以及禁用/启用监控。
我已经能够用一些 super 简单的正则表达式来拉整条线,但这一切都远远超出了我的能力范围。如果有其他更简单的方法来获取这些数据,欢迎提出任何建议。
最佳答案
让我们分部分来看。我能想到的最好的方法是将输出重定向到一个文件,在类 UNIX 环境中,您可以这样做:
cat your-command > filename.txt
其次,您需要逐行读取文件,如果您知道其中任何一个,我会使用 python 脚本或 perl 脚本,或者任何适合您的语言。
第三,您可以通过两种不同的方式获取值:
- 按位置读取列,您可以使用正则表达式获取列,例如:
[^\s]+
- 为每个特定列编写正则表达式,因此对于 IP,您可以使用如下所示的内容:
([0-9]{1,3}\.){4}
用于监控monitoring-([^\s]+)
等。
关于regex - 将正则表达式与 grep 结合使用来过滤详细命令输出中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18018970/