我有很長的日誌文件,是否有可能要求grep只搜索前10行?我可以只grep文件的前n行嗎?
回答
管道的魔力;
head -10 log.txt | grep <whatever>
您有幾個選擇使用程序以及grep
。在我看來,最簡單的就是使用head
:
head -n10 filename | grep ...
head
將輸出前10行(使用-n
選項),然後就可以通過管道將輸出到grep
。
我甚至沒有意識到,使用都在這裏解決方案'head'已經使用'-n 10' **(包括我) **沒有意識到**默認**的'head'只顯示*** 10行***。 :) – 2012-01-07 01:05:06
噢_goodness_沒錯... – 2012-01-07 03:37:27
的head -10 file
輸出可以爲了做到這一點通過管道輸送到grep
:
head -10 file | grep …
使用Perl:
perl -ne 'last if $. > 10; print if /pattern/' file
您可以使用下面的行:
head -n 10 /path/to/file | grep [...]
或者使用awk
爲單個處理,而不|
:
awk '/your_regexp/ && NR < 11' INPUTFILE
在每一行上,如果your_regexp
比賽,以及記錄(行)的數目小於11,則執行默認動作(其被打印輸入線)。
或者使用sed
:
sed -n '/your_regexp/p;10q' INPUTFILE
檢查你的正則表達式,並打印線(-n
意味着不打印輸入,這是否則默認)和10日線後馬上退出。
爲什麼不在十日退出? (見sed解決方案) – potong 2012-01-06 23:56:54
'awk'{if(NR <= 10){if(index($ 0,「ab」)> 0){print $ 0; }} else {exit; }}'textfile' - 更快。 – 2012-01-07 03:07:40
@potong你是對的,更正。 @srikanthradix雖然它可以更快,你的解決方案是不搜索正則表達式,但只適用於固定的字符串。 'awk'{if(NR <= 10){if($ 0〜「YOUR_REGEXP」){print}} else {exit; }}'textfile'。 – 2012-01-07 10:06:47
grep "pattern" <(head -n 10 filename)
對於誰找到這在谷歌人,我需要搜索第一n
線的多個文件,但只打印匹配的文件名。我用
gawk 'FNR>10 {nextfile} /pattern/ { print FILENAME ; nextfile }' filenames
FNR..nextfile
一旦看到10行就停止處理文件。 //..{}
打印文件名並在給定文件中的第一個匹配出現時繼續。引述文件名的其他程序的好處,使用
gawk 'FNR>10 {nextfile} /pattern/ { print "\"" FILENAME "\"" ; nextfile }' filenames
我是那些在谷歌上找到這個人的人之一。謝謝!對我來說 – Floris 2013-12-17 15:06:33
,這段代碼打印出文件的完整路徑。這正是我需要的。另外'FNR = 1'只會搜索第一行。謝謝! – 2017-10-12 05:25:00
的grep -A 10 <模式>
這就是抓住模式,該模式之後的下一個10行。這隻適用於已知模式,如果您沒有已知模式,請使用「頭部」建議。
雖然它可能是正確的。添加更多問題描述以使答案更全面。 – 2014-09-18 08:37:47
head -10 log.txt | grep -A 2 -B 2 pattern_to_search
head -10 log.txt:讀取文件的前10行。
-A 2:在圖案之前打印兩行。
-B 2:在圖案後面打印兩行。
我有一個類似的問題,上述所有問題都沒有完全解決。我也有興趣獲取包含匹配行的文件名。 我的解決方案:
ls |parallel --gnu 'cat <(echo {}) <(head {})|grep -B1 -m1 -P "^>.*F3$"'
N.B:在我的情況下,模式總是匹配的第一行。
Joachim Isaksson的擴展答案:很多時候我需要一個長文件中間的東西,例如線5001 5020,在這種情況下,你可以用tail
結合head
:
head -5020 file.txt | tail -20 | grep x
這得到第5020行,則顯示只有那些在過去20,然後通過管道將一切的grep。
(編輯:在我的例子數柵欄柱誤差,增加管到grep)
- 1. 我可以只使用PYC文件嗎
- 2. 我可以限制一個MySQL表只包含n行嗎?
- 3. 我可以使emacs grep windows只使用其他窗口打開文件嗎?
- 4. 可以將grep收集到一行輸出文件中嗎?
- 5. 我可以只在Wordpress的前端加載插件嗎?
- 6. 需要刪除前N行grep結果文件
- 7. 我可以grep telnet命令輸出嗎?
- 8. cvs中的文件可以只讀嗎?
- 9. 我可以只讓我的程序訪問文件夾嗎?
- 10. 我可以在sqlite中索引列的前n個字符嗎?
- 11. 我可以只用ffmpeg嗎?
- 12. 如何grep在以前的grep目標文件列表中?
- 13. 我可以循環遍歷只有整數的文件名嗎?
- 14. 我可以從DGV的DefaultValuesNeeded事件推斷出前一行嗎?
- 15. 使用grep打印文件名和前n個字符的Linux
- 16. 我可以從2天前獲得以前打開的文件列表嗎?
- 17. 我可以:n-child(10-infinity)嗎?
- 18. 只處理Tcl中gzip文件的前n行
- 19. 差異文件只比較每行的前n個字符
- 20. 我可以讓grep返回幾個文件中的真實發生次數嗎?
- 21. 我可以使用grep來查找包含特定字符串的文件嗎?
- 22. 我可以讓git diff只顯示已更改的文件名和行號嗎?
- 23. grep的最後n匹配跨文件
- 24. grep從文件中抽出n行,n從同一文件中提取
- 25. 我可以在我的DropBox文件夾中運行(XAMPP)MySQl嗎?
- 26. 只顯示grep的第n個匹配
- 27. 我可以從外部文件只導入一段html嗎?
- 28. 我可以配置code_swarm只創建png文件sans visual display嗎?
- 29. 我可以讓Laravel只控制某些文件夾嗎?
- 30. 我可以在DataGridView中只有換行符換行的列嗎?
你也可以將一個任意流管道到'head':'someCmd |頭-10' – 2015-05-30 08:19:39
頭默認打印前10行到標準輸出,所以這對10行'head log.txt | grep' – Zlemini 2016-09-30 12:38:39
當使用grep的'-l'選項時,有沒有辦法做到這一點?我想列出所有前5個字符都是'RIFFD'的文件。 – 2017-05-23 19:20:43