Solaris系统ps命令如何修改输出分隔符?有无类似Linux的AIX格式描述符?
Solaris系统修改ps命令输出分隔符的实现方案
Solaris原生ps没有提供和Linux一致的AIX格式描述符功能来直接指定输出分隔符,你可以通过以下两种稳定的替代方案实现需求:
- 方案1:自定义字段后用awk处理,适配含空格的命令行场景
先用-o参数指定需要输出的字段,再通过Solaris自带的nawk处理输出,避免命令行自带的空格被误识别为分隔符,以下示例将分隔符设置为逗号,输出字段为PID、PPID、运行用户、完整命令行:
你可以根据自己的需求调整ps -eo pid,ppid,ruser,args | nawk ' BEGIN { OFS = "," } NR == 1 { # 处理表头,将多个连续空格替换为指定分隔符 gsub(/ +/, OFS) print } NR > 1 { cmd = "" # 前3个字段为固定输出字段,剩余内容合并为命令行字段 for(i = 4; i <= NF; i++) { cmd = cmd " " $i } print $1, $2, $3, substr(cmd, 2) } 'OFS的值为目标分隔符,同步修改字段对应处理逻辑即可。 - 方案2:字段格式化时直接插入分隔符,适合简单场景
Solaris的ps支持在指定输出字段时设置宽度并插入固定字符,你可以直接在每个字段后插入分隔符再做简单格式化,以下示例使用|作为分隔符:
代码中ps -eo "pid:10|", "ppid:10|", "ruser:15|", args | sed 's/ *| */|/g':10是指定对应字段的输出宽度,你可以根据实际业务的字段长度调整,避免字段内容被截断。
注意:如果你的场景中需要处理包含特殊字符的命令行输出,优先选择方案1,可避免分隔符误匹配问题。
内容的提问来源于stack exchange,提问作者MK Span
相关产品推荐
相关产品推荐

