![使用 awk 搜索字符串并打印第一行的第一列](https://linux22.com/image/94104/%E4%BD%BF%E7%94%A8%20awk%20%E6%90%9C%E7%B4%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%B9%B6%E6%89%93%E5%8D%B0%E7%AC%AC%E4%B8%80%E8%A1%8C%E7%9A%84%E7%AC%AC%E4%B8%80%E5%88%97.png)
我对awk
.我想创建一个快速命令来查找父 Nodejs 进程的进程号。我想出了这个:
ps aux | awk '/node/' | awk 'NR == 1 {print $1}'
但是,我认为应该有一种方法将这两个awk
命令合并为一个命令。更紧凑的写法是什么?
编辑:
虽然pgrep
更适合这个任务,但我仍然想知道如何使用 搜索和打印第一行awk
。
答案1
您不需要对 的输出进行任何文本处理ps
,有一个专门用于此目的的工具,称为pgrep
。
只需执行以下操作:
pgrep node
node
您可以使用正则表达式模式代替字符串。
对于带有进程名称的详细输出:
pgrep -l node
也获取命令名称:
pgrep -a node
检查man pgrep
以获得更多想法。
如果您坚持使用awk
onps
并将两个awk
s 合并为一个,请执行以下操作:
ps aux | awk '/node/ {print $1; exit}'