我想指定列分隔符
ps -o "%a|%p" # separator |
和列宽
ps -o cmd:50,pid # width 50 for cmd
在一命令。这可能吗??
这与列宽无关,但我希望拥有完整长度的命令,即使它不是最后一列。
答案1
-o 命令是附加命令,因此只需执行其中的多个命令:
ps -a -o "cmd:50 " -o "|%p"
CMD | PID
/usr/lib/gnome-session/gnome-session-binary --auto| 4158
问题是 PID 周围会出现一些空格,因为它是右对齐的。您可以看到上面的 4158 在管道后面有一个空格。
答案2
我需要完整的命令和 PID。该命令应该是第一。
cmd
由于您需要按预定义顺序 (和pid
)调整 2 列的输出,因此
这里是ps
+sed
“诡计”:
ps -ao "cmd:50,pid" | sed 's/./&|/51'
测试输出:
CMD | PID
nano jq1 -c | 6041
man ps |13714
pager |13725
ps -ao cmd:50,pid |13950
sed s/./&|/51 |13951
python |15345
bash -v |16513
bash +v |16645
top |22426
awk -F| -v cmd=xmlstarlet ed -L -u "//Add/value[%d |31412
sh -c xmlstarlet ed -L -u "//Add/value[1]/@IP" -v |31413
xmlstarlet ed -L -u //Add/value[1]/@IP -v 1.1.1.1 |31414