2016-10-22 85 views
0

从文件中,我使用以下cmd检索最后一行;从某个字符后面的行中获取字符串

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

我想us-east-1:后获取的字符串,us-west-1: & us-west-2使用下面的grep命令:

echo | tail -n 1 build.log | egrep -m1 -oe 'us-east-1: ami-.{8}' | egrep -m1 -oe 'ami-.{8}' 

我针对每种情况运行此cmd三次。有一个更好的方法吗?

+3

“我想以后获取字符串...”。请学习包含来自给定样本输入的预期输出,并避免对您尝试实现的内容产生误解;-)。祝你好运。 – shellter

回答

2

如果该地区出现的顺序是固定的,你可以简单地做:

$ echo | tail -n 1 build.log | egrep -o 'ami-.{8}' 
ami-63237174 
ami-21236841 
ami-27872347 

如果你想提取地区名称和你有GNUgrep,请尝试:

$ 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 
+0

我想识别的区域以及 –

+2

请参阅我的更新,并请澄清您的具体要求(_直接在您的问题_)。 – mklement0

+0

我想确定哪些ami id试图检索 –

相关问题