从特定字符后面的行中获取字符串
Getting a string from a line that follows a certain character
我正在使用以下命令从文件中检索最后一行;
tail -n 1 build.log
输出如下所示:
1477101542,,ui,say,--> amazon-ebs: AMIs were created:\n\nus-east-1: ami-63237174\nus-west-1: ami-21236841\nus-west-2: ami-27872347
我正在尝试使用以下 grep 命令获取 us-east-1:
、us-west-1:
和 us-west-2
之后的字符串:
echo | tail -n 1 build.log | egrep -m1 -oe 'us-east-1: ami-.{8}' | egrep -m1 -oe 'ami-.{8}'
我运行 对每个条件执行此命令三次。有更好的方法吗?
如果区域出现的顺序是固定的,你可以简单地做:
$ echo | tail -n 1 build.log | egrep -o 'ami-.{8}'
ami-63237174
ami-21236841
ami-27872347
如果您想提取 区域名称 并且您有 GNU grep
,请尝试:
$ echo | tail -n 1 build.log | grep -Po 'us-[^:]+(?=: ami-.{8})'
us-east-1
us-west-1
us-west-2
要获取两个 区域名称和相关值:
$ echo | tail -n 1 build.log | egrep -o 'us-[^:]+: ami-.{8}'
us-east-1: ami-63237174
us-west-1: ami-21236841
us-west-2: ami-27872347
我正在使用以下命令从文件中检索最后一行;
tail -n 1 build.log
输出如下所示:
1477101542,,ui,say,--> amazon-ebs: AMIs were created:\n\nus-east-1: ami-63237174\nus-west-1: ami-21236841\nus-west-2: ami-27872347
我正在尝试使用以下 grep 命令获取 us-east-1:
、us-west-1:
和 us-west-2
之后的字符串:
echo | tail -n 1 build.log | egrep -m1 -oe 'us-east-1: ami-.{8}' | egrep -m1 -oe 'ami-.{8}'
我运行 对每个条件执行此命令三次。有更好的方法吗?
如果区域出现的顺序是固定的,你可以简单地做:
$ echo | tail -n 1 build.log | egrep -o 'ami-.{8}'
ami-63237174
ami-21236841
ami-27872347
如果您想提取 区域名称 并且您有 GNU grep
,请尝试:
$ echo | tail -n 1 build.log | grep -Po 'us-[^:]+(?=: ami-.{8})'
us-east-1
us-west-1
us-west-2
要获取两个 区域名称和相关值:
$ echo | tail -n 1 build.log | egrep -o 'us-[^:]+: ami-.{8}'
us-east-1: ami-63237174
us-west-1: ami-21236841
us-west-2: ami-27872347