2

我正在尝试获取 PID 字段ps -aux。我知道我可以ps -aux | awk '{print $2}'使用cut. 我的想法是指定一个分隔符并选择第二个字段,如下所示:

 ps -aux | cut -d[delimiter] -f2

使用空格作为分隔符 ( ' ') 不起作用,制表符 ( ) 也不起作用\t

一般来说,我如何找出 linux 中空白的确切字符?

4

4 回答 4

3

要识别其他无法打印或外观相似的字符(如空格),请将输出通过管道传输到类似xxd或的工具od -c。例如,这会输出每个字符的十六进制值以及文本以便于查找:

ps -aux | xxd -g 1        # -g 1 outputs each character individually

但是我认为您的问题是ps -aux在字段之间使用多个空格;cut不处理多个连续的分隔符,因此它打印第一个和第二个空格之间的任何内容,即什么也没有。

如果您真的想使用 cut ,则必须删除前导空格和重复空格:

ps -aux | sed 's/^ *//;s/  */ /g' | cut -d' ' -f2
于 2012-12-27T15:18:49.980 回答
2

cut 不支持多字符作为分隔符。如果你真的想使用 cut,字段之间有多个空格:

ps aux | sed 's/  */ /g' | cut -d ' ' -f 2
于 2012-12-27T15:22:43.527 回答
1

要获取ps命令的 PID,您可以执行以下操作:

ps -aux | cut -c10-15

于 2012-12-27T15:22:12.660 回答
1

有关信息:u您使用的ps aux表示,根据man ps

u 显示面向用户的格式

因此,您明确要求提供人类可读的输出,然后使用某些工具对其进行解析?这不是很合适(至少可以这么说)。如果您需要格式化 的输出ps,请使用-o(或--format)选项,如果您的版本ps接受它。因此:

ps ax -o pid

会好很多

于 2012-12-27T20:51:20.627 回答