使用grep时如何设置行长限制(按行长过滤结果)?

How*_*ard 10 linux unix grep regex

用例是我在 HTML/CSS/JS 文件目录(包括子目录)中搜索特定的 CSS 属性。一些单行 JS 库也有我正在搜索的 CSS 属性。

那么有没有办法告诉 grep 它不应该在比我定义的更长的行上给出结果$max_line_length

小智 13

第一种方法,首先尝试将单行 JS 文件排除在 grep 之外。通常,它们的名称类似于 some-library.min.js,因此您可以执行以下操作:

$ grep --exclude '*.min.js' ...
Run Code Online (Sandbox Code Playgroud)

另一种方法是,如果您知道它将在 CSS 文件中,您可以使用ack将搜索限制为 CSS 文件(并忽略各种 VCS cruft):

$ ack --type=css ...
Run Code Online (Sandbox Code Playgroud)

但是,要回答您的问题,您可以编写一个正则表达式来匹配行长。以下将匹配具有 100 个或更少字符的任何行。

$ grep -E '^.{,100}$'
Run Code Online (Sandbox Code Playgroud)

  • 在某些系统上 +1 `ack-grep` (2认同)
  • 由于某种原因,我的 grep 只与 {0,100} 一起工作。 (2认同)