我需要能夠搜索字符串(允許使用4320101),在字符串上方打印20行並在打印後這一點,直到找到字符串爲字符串搜索(例如awk,grep,sed),然後查找上面的X行和下面的另一個字符串
例如:
我只是想輸出到一個文件中的下列結果:
16 Apr 2013 00:14:15
id="4320101"
</eventUpdate>
有一個文件中,這些羣體的文本的多個實例我想。
我試着用下面這樣:
cat filename | grep "</eventUpdate>" -A 20 4320101 -B 100 > greptest.txt
但它永遠只能顯示字符串的20線兩側。
注:
- 行號文是上是不一致的,所以我不能去關閉這些,因此爲什麼我使用-A 20
- 理想我寧願它,所以當它的字符串搜索後, ,它發現後停止,然後進行搜索。
摘要:找到4320101,輸出20線之上4320101(空白或一條線),並低於4320101然後輸出的所有行組成
</eventUpdate>
做研究,我不確定如何獲得awk中, nawk或sed在我的工作上做這件事。
'-A'是grep將在匹配行後面打印'A'的行數。如果你不想在匹配的行之後有任何行,爲什麼你要求20行?我也不明白你對線號不一致的評論,但如果你想要20行'B'efore,使用'-B 20' – rici
我明白了。這應該可以工作:cat filename | grep 4320101 -A 100 eventUpdate> -B 20,但它返回: eventUpdate>:沒有這樣的文件或目錄 – Zippyduda
我意識到方式-A和-B的作品是它需要值的文件名,所以它認爲eventUpdate是一個文件。但是,我想只搜索eventUpdate(給它100行以在4320101之下找到它) – Zippyduda