对lsof和ps中的列进行对齐

Alignment of columns in lsof and ps

本文关键字:对齐 lsof ps      更新时间:2023-10-16

我正在解析popenlsofps的输出。

我想知道第一列和最后一列总是左对齐吗?其余的都是正对的吗?如列FD所示,列3的最小宽度是多少?

例如:

COMMAND PID  USER   FD   TYPE DEVICE  SIZE/OFF   NODE NAMEn
bash    252 noida  cwd    DIR    1,2      1088 410828 /Users/noida ion/Desktopn
bash    252 noida  txt    REG    1,2    628736  11647 /bin/bashn
bash    252 noida  txt    REG    1,2    622896  11866 /usr/lib/dyldn
bash    252 noida  txt    REG    1,2 382100934 418209 /private/var/db/dyld/dyld_shared_cache_x86_64n
bash    252 noida    0u   CHR   16,0  0t401079    601 /dev/ttys000n
bash    252 noida    1u   CHR   16,0  0t401079    601 /dev/ttys000n
bash    252 noida    2u   CHR   16,0  0t401079    601 /dev/ttys000n
bash    252 noida  255u   CHR   16,0  0t401079    601 /dev/ttys000n
0u000bu0001

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

将列命令管道到您的lsof命令。

,

反转对齐

lsof -ps | column -t | rev

粗糙的例子:

//用于反转对齐。

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

使用column -t

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

你可以在下面的链接中找到更多的选项。http://man7.org/linux/man-pages/man1/column.1.html