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桁)、列形式は幅10から30user
に設定されます。command
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));
}'