の出力から選択した列を印刷するコードがあります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
1つの方法は、列幅を直接使用して割り当てることです。
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つの形が似ていますが、2つの形の微妙な違いを深く議論します。ここ。通常、後者の形は驚きをあまり提供しません。
答え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