【问题标题】:Find a string in a text file and put it in another fle with regular expressions在文本文件中查找一个字符串并将其放入另一个带有正则表达式的文件中
【发布时间】:2014-03-23 07:21:45
【问题描述】:

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

【问题讨论】:

    标签: regex bash scripting


    【解决方案1】:
    euca-describe-instances | grep INSTANCE | awk '{print $2}' >> instance_state.txt
    

    这假定INSTANCEi-6FA53F18 之前...如果i-6FA53F18 始终位于第二行第二列,那么您可以只使用awk

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

    【讨论】:

      【解决方案2】:
      euca-describe-instances | grep "INSTANCE" | sed "s/^.*INSTANCE  *\([^ ]*\) .*$/\1/" >> instance_state.txt
      

      这并不假定“INSTANCE”是该行中的第一个单词(尽管当前,在给定的示例中,它是)。

      【讨论】:

        【解决方案3】:

        不需要需要grepawk

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

        【讨论】:

          猜你喜欢
          • 2012-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-02
          • 1970-01-01
          • 2017-03-05
          相关资源
          最近更新 更多