題 使用grep時如何設置行長度限制(按行長度過濾結果)?


用例是我在HTML / CSS / JS文件(包括子目錄)的目錄中搜索特定的CSS屬性。一些單行JS庫也有我正在搜索的CSS屬性。

那麼有沒有辦法告訴grep它不應該在比我定義的$ max_line_length更長的行上給出結果?

謝謝!


6
2017-07-13 05:39


起源




答案:


第一種方法,嘗試排除單行JS文件首先被grepped。 通常這些名稱會像some-library.min.js一樣,所以你可以這樣做:

$ grep --exclude '*.min.js' ...

另一種方法是,如果您知道它將在CSS文件中,您可以使用 ACK 將搜索限制為CSS文件(並忽略各種VCS):

$ ack --type=css ...

但是,要回答您的問題,您可以編寫正則表達式以匹配行長度。以下內容將匹配任何包含100個或更少字符的行。

$ grep -E '^.{,100}$'

11
2017-07-13 06:03



+1 ack-grep 在某些系統上 - Dennis Williamson
此外,ack將忽略縮小的Javascript文件。它認為它們不是源代碼,因此忽略了。 - Andy Lester
由於某種原因,我的grep僅適用於{0,100}。 - temoto