空白を残して特定の列のみを印刷

空白を残して特定の列のみを印刷

の出力から選択した列を印刷するコードがあります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

printf1つの方法は、列幅を直接使用して割り当てることです。

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

関連情報