我已經看到一些前後格線的例子,但我想忽略中間線。 所以,我想先行五行,但沒有別的。 可以這樣做嗎?如何讓'grep'在grepped行之上顯示一行五行?
回答
好吧,我認爲這會做你想要的。它會查找一個模式,並在每場比賽前提取第5行。
grep -B5 "pattern" filename | awk -F '\n' 'ln ~ /^$/ { ln = "matched"; print $1 } $1 ~ /^--$/ { ln = "" }'
基本上這是如何工作是需要的第一線,打印,然後等待,直到它看到^--$
(通過使用grep的匹配分離器),並重新開始。
完美!謝謝 – mike628 2011-06-08 16:54:55
嘿克里斯,不是一個awk用戶,但我想更好地理解這一點。你能詳細解釋一下awk的一部分嗎?我在網上看了一大堆教程,其中一些我無法弄清楚。 – mike628 2011-06-09 13:09:45
如果我要用awk解決這個問題,那麼執行'grep -B5「模式」filename |「可能會更直截了當。 awk'{mod = NR%7; if(mod == 1){print $ 0}}''。 7因爲1個匹配的行+ 5個上下文行+ 1個分隔符行。第一行輸出將是一個分隔符行,所以感興趣的行將是第7行,從第2行開始。 NR是awk自動給出的從零開始的行號。對於'-B',Thx爲 – 2016-01-19 01:32:45
這是選項-B
-B NUM, --before-context=NUM Print NUM lines of leading context before matching lines. Places a line containing -- between contiguous groups of matches.
雖然不符合要求 - 它也顯示所有中間行。 – Cybergibbons 2015-06-11 10:25:44
如果你只是想有5日線在比賽之前,你可以這樣做:
grep -B 5 pattern file | head -1
編輯:
如果你可以有多個比賽,你可以試試這個(用你的實際模式交換pattern
):
sed -n '/pattern/!{H;x;s/^.*\n\(.*\n.*\n.*\n.*\n.*\)$/\1/;x};/pattern/{x;s/^\([^\n]*\).*$/\1/;p}' file
我把這個從Sed tutorial,節:Keeping more than one line in the hold buffer,實施例2和適於它一下。
這隻適用於第一場比賽,任何後續的比賽將被扔掉。 – 2011-06-08 15:43:37
我添加了第二種方法 - 這次它也可以用於多個匹配。 – bmk 2011-06-08 16:04:18
這種方式對我來說更容易:
grep --no-group-separator -B5 "pattern" file | sed -n 1~5p
這裏grep 5線及之前的模式,關閉---組分隔符,然後打印每5日線。
- 1. 在新行上顯示grep內容
- 2. 如何讓兩行標題的較長行顯示在底部,而較短的一行顯示在CSS上?
- 3. BASH:如何避免在grep中顯示最後一行?
- 4. 如何從基於模式的上一行grep數據(不在行數之前)
- 5. ng-repeat在顯示控制器的行之前顯示一行
- 6. 使用grep顯示在命令行
- 7. 在grep搜索後顯示n行
- 8. grep如何運行如此之快?
- 9. 如何讓ListView顯示在ListView之上?
- 10. 如何顯示除第一行之外的所有行?
- 11. Python grep單詞並在此單詞之前顯示行
- 12. Java:試圖讓我的代碼在一行而不是五行上打印
- 13. 如何顯示兩行中的一行
- 14. 如何這兩行顯示爲一行
- 15. 如何讓WPF TextBlock在多行上顯示我的文本?
- 16. 如何讓'hg log --verbose'在多行上顯示文件?
- 17. 如何在查詢中正確排序顯示五行和一行,總結其餘的行?
- 18. 行即使存在也不會被grepped
- 19. 如何在第一行顯示句子(多行)的行號?
- 20. 顯示在一行
- 21. 顯示標籤上一行
- 22. 如何讓我的C#ComboBox在運行時顯示一個值?
- 23. 如何讓div在一行中正確顯示?
- 24. 如何讓多個記錄在MySQL中顯示爲一行?
- 25. 使用grep顯示結果的行號
- 26. grep沒有顯示路徑/文件:行
- 27. 有沒有辦法讓一個顯示在自己的行上?
- 28. 顯示每一行的兩場之一
- 29. 如何讓sh顯示運行時的行數?
- 30. 如何使十個<a>鏈接顯示爲五行中的兩行?
問題還不清楚,是匹配前的第5行還是匹配前的第5行 – CharlesB 2011-06-08 16:14:29
Dup of http://stackoverflow.com/questions/9081/grep-a-file-but-show-several-surrounding-行 – Vadzim 2014-07-15 13:33:26
這個評論即將到來,但問問自己:一旦你確定了「參考線」和前五個「grep -B5」foo「文件」,是否有關於該行的診斷信息,除了它是5線之前?例如,你在尋找一個特定的錯誤,並希望返回進程ID?那麼也許'grep -B5「foo」file | grep「bar」'可能是最簡單的事情。 – 2016-01-19 01:13:17