bash - 如何用一个简单的命令将两行(标题+过滤后的内容)作为输出?

标签 bash grep

我想得到输出中的头部。

ps  lax |head -n 1
F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND

过滤后的行:

ps  lax |grep openbox |grep -v grep
0  1000  1608  1513  20   0 206408 20580 SyS_po S    ?          0:00 openbox --config-file /home/debian9/.config/openbox/lxde-rc.xml

我期望得到的是下面两行:

F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
0  1000  1608  1513  20   0 206408 20580 SyS_po S    ?          0:00 openbox --config-file /home/debian9/.config/openbox/lxde-rc.xml

如何用一个简单的命令将两行(head+filtered content)作为输出?

最佳答案

对于复合条件,您使用 awk,而不是 grep:

ps  lax | awk 'NR==1 || /[o]penbox/'

请注意@Cyrus 和我的回答中 [o] 的惯用用法,以便正则表达式与此命令本身不匹配,因此您无需从 with 中显式删除此命令名称正则表达式。

关于bash - 如何用一个简单的命令将两行(标题+过滤后的内容)作为输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50808563/

相关文章:

linux - 如何连接bash中包含文件中的字符串

bash - 从图像为 FFmpeg 生成调色板

linux - 如何限制 bash 中的特定命令?

linux - 如何使用 gawk/grep 打印特定的文本列表?例如我想打印txt文件中存在的所有颜色的名称

bash - 获取开放端口作为数组

linux - 是否可以将一个文件(sym)链接到多个文件?

bash - 如何使用 shell 脚本判断 postgres 数据库表是否存在

linux - 从日志文件中计算具有匹配模式的行

linux - 使用正则表达式用 sed 删除第一行

regex - (bash) 检查 IP 是否在子网范围文件中