这个想法是我想通过euca-describe-instances获取虚拟机的ID,并将其放入带有bash脚本的文本文件中。
euca-describe-instances
命令的输出为:
RESERVATION r-65C341BF 016346531768 my_sec_group
INSTANCE i-6FA53F18 emi-4AE43EB9 euca-194- euca-192.euca3.internal running balalala 0m1.medium 2014-02-14T13:29:04.582Z wiat-c01 monitoring-disabled 100.100.602.156 191.169.98.86 ebs hvm
BLOCKDEVICE /dev/sda vol-ABE63A99 2014-02-14T13:29:04.819Z true
我想获取实例 ID,在本例中为 i-6FA53F18。我想用正则表达式来做到这一点,到目前为止的代码是,没有输出,没有错误,什么都没有:
euca-describe-instances | grep 'i-[a-zA-Z0-9]{8}' >> instance_state.txt
euca-describe-instances | grep INSTANCE | awk '{print $2}' >> instance_state.txt
这假设INSTANCE
先于i-6FA53F18
...如果i-6FA53F18
始终位于第 2 行和第 2 列中,则可以仅使用 awk
:
euca-describe-instances | awk 'NR==2 {print $2}' >> instance_state.txt
euca-describe-instances | grep "INSTANCE" | sed "s/^.*INSTANCE *([^ ]*) .*$/1/" >> instance_state.txt
这并不假定"INSTANCE"是行中的第一个单词(尽管目前在给定的示例中,它是)。
你不需要grep
awk
。
euca-describe-instances | awk '/INSTANCE/{ print $2 }' >> instance_state.txt