각 줄에서 동일한 키워드를 다른 문자열로 바꾸십시오.

각 줄에서 동일한 키워드를 다른 문자열로 바꾸십시오.

다음 명령을 사용하여 사용 가능한 디스크 목록과 SSD인지 회전 디스크인지 여부를 반환했습니다(기본적으로 lsblk 출력의 0과 1을 실제 의미로 대체).

lsblk -d -o name,ro | sed "s/RO/\ TYPE/; s/NAME/DISK/; s/0/SSD/g; s/1/ROT/g"

예제 출력:

DISK  TYPE
sda   SSD
sdb   ROT

lsblk이제 ( ) 에 또 다른 열 "rm"을 추가하고 싶지만 lsblk -d -o name,ro,rm다른 항목을 나타내기 위해 0과 1도 사용합니다(0=고정 디스크, 1=이동식 디스크).

sed(또는 awk 등)를 사용하여 세 번째 열의 0과 1을 YES와 NO로 바꾸는 방법이 있나요?

답변1

노력하다

lsblk -d -o name,ro,rm |
   awk '$2 == 0 { $2 = "SSD" ; } $2 == 1 { $2 = "ROT" ; }
        $3 == 0 { $3 = "NO" ; } $3  == 1 { $3 = "YES" ;}
        { print ; }'
  • 이는 한 줄일 수 있습니다.
  • 때때로 사람들 1{ print ; }.
  • 연습 RO으로 왼쪽으로 바꾸세요 .TYPE

답변2

Awk방법:

lsblk -d -o name,ro,rm \
| awk 'NR == 1{ print "DISK TYPE REMOVABLE"; split("SSD ROT", ro); split("NO YES", rm); next}
      { print $1, ro[$2+1], rm[$3+1] }'

예제 출력:

DISK TYPE REMOVABLE
sda SSD NO
sr0 SSD YES

관련 정보