我试图command
在运行 ps 时限制列的列宽command
,但也尝试将该输出通过管道传输到grep
命令中。然而,这是行不通的。
这运行良好:
ps -eo pid,user,command:30
然而,这个:
ps -eo pid,user,command:30 | grep node
给我这个错误:
ps: command:30: keyword not found
实际上,我正在 Mac 上运行 oh-my-zsh,以防万一。
感谢所有帮助;谢谢!
答案1
假设 sed 支持-E
,限制command
为 30 个字符:
ps -eo pid,user,command |
sed -E 's/^( +[^ ]+ +[^ ]+ +)(.{30}).*$/\1\2/g'
使用 awk,pid
列格式设置为宽度 6(假设 pid 最多有 6 位数字),user
列格式设置为宽度 10,command
到 30:
ps -eo pid,user,command |
awk '{
line=$0;
sub(/^ +[^ ]+ +[^ ]+ +/, "", line);
printf("%6s %s%*s %s\n", $1, substr($2, 0, 10),
length($2) <= 10 ? 10-length($2) : 0, " ",
substr(line, 0, 30));
}'