linux - 检查 bash 文件的前 N ​​行是否有字符串

标签 linux bash shell unix scripting

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

这是我目前的实现

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

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

最佳答案

这将显示与前 N 行中的模式匹配的文件

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

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

关于linux - 检查 bash 文件的前 N ​​行是否有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14668649/

相关文章:

regex - 将正则表达式与 `rename` 中的 `util-linux` 版本一起使用

linux - xls2csv 的 Bash 脚本

bash - 如何通过将行号作为变量传递来删除一行?

shell - 在 UNIX 中重定向读取命令的输入

linux - 进程和线程调度开销

python - 如何使 C 包装器(用 32 位 Python 编写)在运行 64 位 Python 的新机器上工作?

windows - TeamCity 替代方案

bash - Putty 在执行 bash 脚本时关闭

linux - Unix/Linux 管道是由生产者还是消费者驱动的?

python - 为什么某些 Unix 命令在从 Python 内部调用时不起作用? (找不到命令)