2016-10-22 89 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試圖檢索 –

相關問題