從 grep 結果中排除長行

從 grep 結果中排除長行

如何從grep結果中排除很長的行?

我經常 grep 瀏覽大量 .js 檔案 ( -r),其中一些檔案是經過編譯的,因此它們由一行組成,通常有數千個字元長。從所有這些混亂中,我發現很難看到其餘文件的結果。

我應該傳遞什麼grep來排除長度超過 1000 個字元的行?

我不想透過另一個 grep 來傳輸結果,因為這會讓我失去輸出中的顏色,或者必須再次在管道末尾添加第一個 grep 來恢復顏色。

答案1

將管道輸送grep到某些東西不一定會消除顏色。這種行為是由--color=auto(如果你檢查一下alias grep可能是你正在使用的)引起的。您可以覆蓋它並傳遞--color=alwaysgrep甚至透過管道也可以保留顏色。

至於排除這些行,您可以透過管道傳輸到您喜歡的任何工具(例如,cut如 Amazed 所提到的)。請記住,grep 中的顏色會在匹配的行中插入額外的位元組(如果這對您很重要)。沒有明顯的方法(無論如何對我來說)在同一個grep呼叫中執行此操作。

答案2

以下命令應該可以實現您想要的效果,即不輸出長度大於 1000 個字元的匹配行:

grep -r --color=always $pattern . | cut -c1-1000

--color=always標誌確保 grep 產生顏色轉義序列。

此選項的預設值為--color=auto,這使得 grep color 僅在傳遞到互動式終端時才輸出,並且在透過管道傳輸到另一個命令時不使用顏色。

來源:https://unix.stackexchange.com/a/113507/48906

相關內容