相关疑难解决方法(0)

如何grep特定行_和_文件的第一行?

假设一个简单的grep,例如:

$ psa aux | grep someApp
1000     11634 51.2  0.1  32824  9112 pts/1    SN+  13:24   7:49 someApp
Run Code Online (Sandbox Code Playgroud)

这提供了很多信息,但由于缺少 ps 命令的第一行,因此没有信息的上下文。我更希望显示 ps 的第一行:

$ psa aux | someMagic someApp
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
1000     11634 51.2  0.1  32824  9112 pts/1    SN+  13:24   7:49 someApp
Run Code Online (Sandbox Code Playgroud)

当然,我可以为 ps 专门为 grep 添加一个正则表达式:

$ ps aux | grep -E "COMMAND|someApp"
Run Code Online (Sandbox Code Playgroud)

但是,我更喜欢更通用的解决方案,因为在其他情况下我也希望拥有第一行。

似乎这将是“stdmeta”文件描述符的一个很好的用例。

command-line bash

81
推荐指数
6
解决办法
8万
查看次数

Bash:如何将标准输出发送到控制台并通过管道发送到下一个命令?

如何将标准输出发送到控制台并同时通过管道发送到下一个命令?

我已经尝试使用此处建议的 Read 命令,该命令可以将 Grep 的输出从日志文件的尾部获取到变量,然后获取到日志或电子邮件,但我仍然希望将输出获取到标准输出控制台还有: https://unix.stackexchange.com/a/365222/346155

我尝试过使用 Tee,如下所示: https: //unix.stackexchange.com/a/47936/346155

我使用 --line-buffered 标志以防万一: /sf/answers/501402891/

我可能遗漏了一些关于 sdtin 逻辑的简单内容,但第一个链接的情况表明 Bash 可能不具备这种简单的功能。并且该变量无法从子 shell 中读取。

有效的事实echo 'hello' | echo $(</dev/stdin)表明它是可能的。另一种看待它的方法是,如何在每个管道段内进行标准输出到控制台。这应该有助于在将一长串命令提交到 bash 脚本之前对其进行调试。

编辑:类似echo 'hello' | echo $(</dev/stdin) >/dev/stoutor 的东西echo 'hello' | tee >/dev/stdout | echo 2nd $(</dev/stdin),后者应该输出 'hello' 两次,但只输出一次。

bash

9
推荐指数
1
解决办法
7773
查看次数

标签 统计

bash ×2

command-line ×1