2

我正在尝试编写一个 bash 脚本,该脚本可以通过并仅检查文件的前 N ​​行以匹配特定字符串。我可以编写一个简单的命令来检查整个文件,但是包含在大于 N 的行中的信息可能不准确。

这是我当前的实现

find . -exec egrep -H -m 1 -l "\<$month/$day/$year\>" {} \;

我正在考虑使用 head 函数首先修剪文件,但这似乎不起作用。有什么建议么?提前致谢

4

2 回答 2

1

这将向您显示与第一N行中的模式匹配的文件

find . -type f | xargs egrep -H -m 1 -n "\<$month/$day/$year\>" | awk -F : '$2 <= N { print $1; }'

egrep搜索文件中的第一个匹配项并添加行号。awk然后搜索行号小于或等于N(在此处插入数字)的所有行并打印文件名。

于 2013-02-03T02:49:15.907 回答
0

或许像这样

find -type f | xargs head -N | egrep -H -m 1 -l "\<$month/$day/$year\>"

其中N是行数。

于 2013-02-03T01:55:23.167 回答