我有一些代码可以从 的输出中打印选择的列lsblk
。然而,结果中的空格使得阅读变得困难。有没有办法在保持空白的同时做到这一点?
echo "`sudo lsblk | awk -F ' ' '{print $1 " " $4 " " $6 " " $7}'`"
输出:
NAME SIZE TYPE MOUNTPOINT
sda 238.5G disk
├─sda5 68.6G part /
├─sda6 7.8G part [SWAP]
└─sda8 1000M part
答案1
一种方法是自己使用printf
和分配列宽:
lsblk | awk '{printf "%-8s %8s %5s %s\n",$1,$4,$6,$7}'
您可以自由调整报表中的列宽printf
以满足您的需要。
例子:
$ lsblk | awk '{printf "%-8s %8s %5s %s\n",$1,$4,$6,$7}'
NAME SIZE TYPE MOUNTPOINT
sda 500.0G disk
├─sda1 100M part /boot
├─sda2 28.6G part /
在旁边
考虑问题中所示的形式:
echo "`cmd1 | cmd2`"
与形式:
cmd1 | cmd2
虽然两种形式相似,但深入讨论了这两种形式之间的细微差别这里。通常,后一种形式提供的惊喜较少。
答案2
在这里,您可以告诉lsblk
首先输出您想要的列:
$ lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
NAME SIZE TYPE MOUNTPOINT
sda 465.8G disk
├─sda1 1G part
└─sda2 464.8G part
├─VG_XY-debian64 40G lvm /
├─VG_XY-swap 16G lvm [SWAP]
└─VG_XY-home 300G lvm /home
sr0 1024M rom
答案3
@John1024 的回答和@steeldriver 的评论是完美的解决方案。
或者修复之前获得的输出
...your_command | column -t