我想这样做:
仅作为示例,假设我想从 $PID
获取命令名称(请注意,这只是一个示例,我并不是说这是获取来自进程 ID 的命令名称 - 我真正的问题是另一个我无法控制其输出格式的命令。
如果我运行 ps
我会得到:
PID TTY TIME CMD
11383 pts/1 00:00:00 bash
11771 pts/1 00:00:00 ps
Now I do ps | egrep 11383
and get
11383 pts/1 00:00:00 bash
下一步:ps | egrep 11383 |剪切 -d""-f 4
。输出是:
<absolutely nothing/>
问题在于 cut
将输出切割为单个空格,并且由于 ps
在第 2 列和第 3 列之间添加了一些空格以保持表格的相似性,cut
选择一个空字符串。当然,我可以使用 cut
来选择第 7 个而不是第 4 个字段,但是我怎么知道,特别是当输出是可变的并且事先未知时。
最佳答案
一种简单的方法是添加 <a href="http://linux.die.net/man/1/tr" rel="noreferrer noopener nofollow">tr</a>
的通行证挤出任何重复的字段分隔符:
$ ps | egrep 11383 | tr -s ' ' | cut -d ' ' -f 4
https://stackoverflow.com/questions/1629908/