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

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

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

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

答案1

第一种方法是,首先尝试排除单行 JS 文件。这些文件通常有一个名称,如 some-library.min.js,因此您可以执行以下操作:

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

另一种方法是,如果你知道它将位于 CSS 文件中,则可以使用确认将搜索范围限制在 CSS 文件内(并忽略各种 VCS 垃圾):

$ ack --type=css ...

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

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

答案2

我更喜欢通过剪切行并反转匹配 -v 以排除内容。对我来说可读性更好。我猜性能方面不是最佳的

grep -r something . | cut -b 1-99 | grep -v min.js

相关内容