2014-02-05 48 views

回答

4

用awk:

awk -v s='2' '/^foo:/{line=$0;next} $1==s{print line}' file 
foo: A 
foo: C 
+1

+1但你不應該使用字母'l'作爲變量,因爲它看起來太像數字'1',在某些字體中完全無法區分。 –

+1

我不得不復制並粘貼到谷歌只是爲了確保。 –

+0

建議您採取措施,將'l'改爲'line'以提高可讀性。 – anubhava

0

此正則表達式肯定可以使用一些優化,但它應該工作:

foo: [A-Z](?=(?:(?!foo)[^2])*2) 

惡魔sture:http://regex101.com/r/cX8gM0