【发布时间】:2014-01-12 10:13:52
【问题描述】:
我正在尝试对一个大文件中的几个字符串应用 grep。但是,我想通过 awk 脚本将该行传递给 grep 命令。我还希望将输出重定向到脚本。 我有一个从文件中读取记录的 awk 脚本。我希望 grep 仅应用于少数记录。当前记录 $0 将是要使用 grep 的文本。 我该怎么做?目前,我正在尝试这个 -
system("grep --count -w 'GOOD' \n" $0)
但是,它似乎不起作用。我应该使用什么?
【问题讨论】:
-
最好向我们展示一些数据,您喜欢其中的哪些内容以及如何到达那里。通过这种方式,我们可以帮助您制定解决方案。我认为
awk中不需要grep,它应该可以做到。 -
很少需要 grep 来自 awk 的输出,因为 awk 非常灵活和强大,它可以做 grep 可以做的所有事情,甚至更多
-
@FredrikPihl 是对的。正如您所说,如果您有一个“巨大”文件,那么对于每一行,您都会启动一个 grep 进程。 grep 很快,但想想 10m 行。将您的 grep 逻辑合并到您的 awk 中,可能会获得更好的性能。从您目前对问题的描述来看,要求相当模糊。
-
awk 不允许我计算该特定记录中正则表达式匹配的出现次数。我可能必须为此编写一个函数。虽然现在这比使用 grep 更有意义。
-
@user657592 有很多方法可以使用 awk 获取记录的正则表达式匹配计数。