【发布时间】:2014-04-12 15:49:05
【问题描述】:
在我开始使用 awk 遍历每一行之前,我将如何打印给定输入的第一行?
假设我想运行命令ps aux 并返回我正在搜索的列标题和特定模式。过去我这样做过:
ps aux | ggrep -Pi 'CPU|foo'
CPU 是我知道将在输入的第一行中的值,因为它是列标题之一,foo 是我实际搜索的特定模式。
我发现了一个 awk 模式,它会拉出第一行:
awk 'NR > 1 { exit }; 1'
这是有道理的,但在对其余输入进行模式匹配之前,我似乎无法弄清楚如何触发它。我想我可以把它放在 awk 命令的BEGIN 部分,但这似乎不起作用。
有什么建议吗?
【问题讨论】:
-
grep 有问题吗?对于这项任务,它比 awk 更有意义。
-
我不明白你想要什么。如果 awk 读取了您的第一行,它已经开始读取您的文件的行。
-
@hek2mgl,我在 grepping 时遇到的问题是,我用于匹配的列标题恰好出现在第一行以外的某些输出中,例如如果我使用
PIDgrep 来获取标题,如果我使用-i标志进行 grep,有时它会返回带有pid模式的进程行。另外,我正在尝试更多地了解 awk。 @Kent,我想要的是 awk 的输出,它始终包含第一行,然后还包含与我匹配的模式匹配的其余行。