如何從grep
結果中排除很長的行?
我經常 grep 瀏覽大量 .js 檔案 ( -r
),其中一些檔案是經過編譯的,因此它們由一行組成,通常有數千個字元長。從所有這些混亂中,我發現很難看到其餘文件的結果。
我應該傳遞什麼grep
來排除長度超過 1000 個字元的行?
我不想透過另一個 grep 來傳輸結果,因為這會讓我失去輸出中的顏色,或者必須再次在管道末尾添加第一個 grep 來恢復顏色。
答案1
將管道輸送grep
到某些東西不一定會消除顏色。這種行為是由--color=auto
(如果你檢查一下alias grep
可能是你正在使用的)引起的。您可以覆蓋它並傳遞--color=always
,grep
甚至透過管道也可以保留顏色。
至於排除這些行,您可以透過管道傳輸到您喜歡的任何工具(例如,cut
如 Amazed 所提到的)。請記住,grep 中的顏色會在匹配的行中插入額外的位元組(如果這對您很重要)。沒有明顯的方法(無論如何對我來說)在同一個grep
呼叫中執行此操作。
答案2
以下命令應該可以實現您想要的效果,即不輸出長度大於 1000 個字元的匹配行:
grep -r --color=always $pattern . | cut -c1-1000
此--color=always
標誌確保 grep 產生顏色轉義序列。
此選項的預設值為--color=auto
,這使得 grep color 僅在傳遞到互動式終端時才輸出,並且在透過管道傳輸到另一個命令時不使用顏色。