如何确定在Linux中的空白的确切字符?

我正在尝试获取ps -aux的PID字段。 我知道我可以用ps -aux | awk '{print $2}'来实现这个function ps -aux | awk '{print $2}' ,但是实际上想要看看我是否可以使用cut命令来做同样的事情。 我的想法是指定一个分隔符,并select像这样的第二个领域:

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

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

一般来说,我怎样才能找出在Linux中的空白的确切字符?

要识别不可打印的或类似外观的字符(如空格),输出到像xxdod -c这样的工具。 例如,这将输出每个字符的十六进制值以及文本,以便于查找:

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

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

如果你真的想使用剪切,你必须删除前导空格和重复空格:

 ps -aux | sed 's/^ *//;s/ */ /g' | cut -d' ' -f2 

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

 ps aux | sed 's/ */ /g' | cut -d ' ' -f 2 

要获得ps命令的PID,可以这样做:

ps -aux | cut -c10-15

有关信息:您在ps aux使用的手段,根据man ps

u显示面向用户的格式

所以你明确地要求一个人类可读的输出,然后用一些工具解析它? 这不是很合适(至少可以这样说)。 如果您需要格式化ps的输出,请使用-o (或--format )选项,如果您的ps版本接受它的话。 因此:

 ps ax -o pid 

会好很多