Bash/grep:忽略超过 N 个字符的行

Bash/grep:忽略超过 N 个字符的行

我有一个 find/grep 命令,用于搜索我的项目的代码库,因此:

find folder1 folder2 folderetc -print | awk '{print "\""$0"\""}' | xargs grep -n "search-string"

经常让我恼火的是压缩后的 javascript 和 css 文件,它们将所有内容都打包到一行中(这可能是由于错误地认为删除换行符会使 javascript 文件的下载速度大大加快)。对于这些压缩或压缩后的文件,总会有一个未压缩的版本,我希望在我的结果中看到它。我永远不想看到压缩后的版本,因为它只会导致屏幕上出现一连串无法阅读的垃圾。

由于没有命名约定,因此没有系统的方法可以告诉 grep 避免最小化或打包文件。但我突然想到可以过滤掉行长超过 400 个字符的结果。有没有办法用 grep(或其他东西)做到这一点?

答案1

就在这里:

$ echo foobar | awk 'length($0) < 7 && $0~/foo/'
foobar

将 替换echo为您的 find 命令,并将foo替换为要搜索的字符串。将 调整7为您想要过滤的长度。

答案2

你可能想看看确认,它基本上是为程序员优化的 grep。它会忽略缩小的 JS 和 CSS 文件,以及目录中的任何版本控制系统文件。

相关内容