2016-09-29 48 views
0

我的意思是我想搜索「thing1」,然後我想根據「thing1」的位置搜索「thing2」。我想按照它們在係數中的順序在結果中顯示它們。有條件的grep/ack搜索?

例如。我在第100行找到「thing1」。然後,我想要搜索「thing1」之前出現的第一個「thing2」。然後我想按照「thing2」和「thing1」的順序顯示這兩個。我想爲我找到的每個「thing1」實例做這件事。

原因是我想搜索某些字符串,我知道它們將在列表(python)中,我也想知道列表的名稱。所以我認爲我可以搜索字符串,然後顯示字符串之前出現的第一個「= [」符號。

因此,如果一個文件有:

my_list = [ 
    'item1', 
    'item2', 
    'item3', 
] 

my_other_list = [ 
    'item4', 
    'item5', 
    'item3', 
] 

,並創建一個搜索看起來爲'item3',然後回頭找以前'= ['

那麼輸出應該(不包括行號這grep和ACK將把):

my_list = [ 
    'item3', 

my_other_list = [ 
    'item3', 
+1

可以添加樣本數據以及所需的輸出? –

+0

我的答案是否解決了你的問題?如果是這樣,請考慮接受它作爲您的答案 - 通過點擊投票計數旁邊的空心綠色勾號/複選標記。如果沒有,請說出什麼不起作用,以便我或其他人可以進一步幫助您。謝謝。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235 –

回答

0

我想你想要這樣的:

awk '/=/{thing2=$0} /item3/{print thing2;print $0,"\n"}' YourFile 

所以,每當您看到一個=時,您都記得該行爲thing2。當您看到item3時,您將打印您看到的最後一個thing2和當前行。

樣本輸出

my_list = [ 
    'item3', 

my_other_list = [ 
    'item3',