【发布时间】:2021-09-27 20:38:29
【问题描述】:
我安装了latest GitBash 版本,$BASH_VERSION 是4.4.23(1)。
现在我得到了命令ps aux 的输出,如下所示:
PID PPID PGID WINPID TTY UID STIME COMMAND
<4-DIGITS> <1-DIGIT> <4-DIGITS> <4-DIGITS> ? <5-DIGITS> <CURR_TIME> <COMMAND>
<4-DIGITS> <1-DIGIT> <4-DIGITS> <4-DIGITS> ? <5-DIGITS> <CURR_TIME> <COMMAND>
....
....
<4-DIGITS> <1-DIGIT> <4-DIGITS> <4-DIGITS> ? <5-DIGITS> <CURR_TIME> <COMMAND>
<4-DIGITS> <1-DIGIT> <4-DIGITS> <4-DIGITS> ? <5-DIGITS> <CURR_TIME> <COMMAND>
从此输出中,我希望能够通过仅指定列名称(也可以是多个列)来提取特定的列值,而不是每次从左到右计算列号的列。
我有这个命令,但它只适用于文件,但我希望它也适用于另一个命令的输出:
awk -vcol=<COL_NAME> '(NR==1){colnum=-1;for(i=1;i<=NF;i++)if($(i)==col)colnum=i;}{print $(colnum)}'
如何使这项工作用于过滤先前命令的输出,例如 ps aux | awk <COLUMN_NAME=WINPID> ?
【问题讨论】:
-
不需要使用
awk或类似的东西。可以使用ps -o ...指示ps仅输出某些列,请参阅man ps。 -
不,当我尝试
ps和-o或-O或-o WINPID等以及其他一些组合时,我一直收到这个错误,至少在GitBash 中。$ ps -O ps: unknown option -- O Try ``ps --help' for more information. -
似乎 GitiBash 附带的
ps不符合 POSIX。我的错。但是your awk command already works。你还需要什么? -
它不适用于多列,我昨天也试过了,它不工作,但可能是我打错了,谢谢指出...
标签: awk filtering multiple-columns git-bash