【发布时间】:2010-12-10 10:28:59
【问题描述】:
我想这样做:
- 运行命令
- 捕获输出
- 选择一行
- 选择该行的一列
仅作为示例,假设我想从$PID 获取命令名称(请注意,这只是一个示例,我并不是说这是从进程 id 获取命令名称的最简单方法- 我真正的问题是另一个我无法控制其输出格式的命令。
如果我运行ps,我会得到:
PID TTY TIME CMD
11383 pts/1 00:00:00 bash
11771 pts/1 00:00:00 ps
现在我做ps | egrep 11383 并得到
11383 pts/1 00:00:00 bash
下一步:ps | egrep 11383 | cut -d" " -f 4。输出是:
<absolutely nothing/>
问题在于cut 将输出削减了单个空格,并且ps 在第 2 列和第 3 列之间添加了一些空格以保持表格的相似性,cut 选择了一个空字符串。当然,我可以使用cut 选择第 7 个字段而不是第 4 个字段,但我怎么知道,特别是当输出是可变的且事先未知时。
【问题讨论】:
-
使用 awk(还有 25 个字符)。