공백을 남겨두고 특정 열만 인쇄

공백을 남겨두고 특정 열만 인쇄

의 출력에서 ​​선택한 열을 인쇄하는 코드가 있습니다 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

관련 정보