在文本文件中查找字符串并将其放在具有正则表达式的另一个文件中

时间:2014-02-21 16:44:52

标签: regex bash scripting

我的想法是想通过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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

euca-describe-instances | grep "INSTANCE" | sed "s/^.*INSTANCE  *\([^ ]*\) .*$/\1/" >> instance_state.txt

这并不是假设“INSTANCE”是行中的第一个单词(虽然目前,在给定的例子中,它是)。

答案 2 :(得分:1)

需要grep awk

euca-describe-instances | awk '/INSTANCE/{ print $2 }' >> instance_state.txt