lsof 和 ps 中的列对齐

Alignment of columns in lsof and ps

我正在努力将 popen 的输出解析为 lsofps

我想知道第一列和最后一列是否始终左对齐?而中间的其余部分总是右对齐?如列 FD 所示,列的最小宽度是 3?

例如:

COMMAND PID  USER   FD   TYPE DEVICE  SIZE/OFF   NODE NAME\n
bash    252 noida  cwd    DIR    1,2      1088 410828 /Users/noida ion/Desktop\n
bash    252 noida  txt    REG    1,2    628736  11647 /bin/bash\n
bash    252 noida  txt    REG    1,2    622896  11866 /usr/lib/dyld\n
bash    252 noida  txt    REG    1,2 382100934 418209 /private/var/db/dyld/dyld_shared_cache_x86_64\n
bash    252 noida    0u   CHR   16,0  0t401079    601 /dev/ttys000\n
bash    252 noida    1u   CHR   16,0  0t401079    601 /dev/ttys000\n
bash    252 noida    2u   CHR   16,0  0t401079    601 /dev/ttys000\n
bash    252 noida  255u   CHR   16,0  0t401079    601 /dev/ttys000\n
0\u000b\u0001

您得到的输出可能是默认格式的。 在 popen 中传递 shell 命令时也添加格式选项。

将列命令通过管道传输到您的 lsof 命令。

例如:

反转对齐

lsof -ps |列-t |转

粗略示例:

//反转对齐。

FILE *fp;
char pOpenCmd[100] = "lsof -ps | column -t | rev";
fp = popen(pOpenCmd, "r");

要将所有内容都对齐到左侧,请使用 "column -t"

也许你可以通过管道 "column -c" 来指定列的宽度。

您在下面的此处有更多选择 link。 http://man7.org/linux/man-pages/man1/column.1.html