fdisk 명령에서 문자열 추출

fdisk 명령에서 문자열 추출

fdisk -l에서 실행 되고 /dev/sdbn실행 되는 쉘 스크립트를 작성하고 싶습니다 fdisk -l.

추출된 단어를 이용해서 에 설치하고 싶습니다 /mnt.

예를 들어:

Disk identifier: 0x00000000

Device     Boot    Start    End    Blocks    Id    System
/dev/sdb1    *         1    493    3956672    6     FAT16

문자열만 추출하려면 어떻게 해야 합니까 /dev/sdb1?

답변1

노력하다:

fdisk -l | grep -o '^/dev/sdb[0-9]'

-o옵션을 사용하면 grep일치하는 패턴만 인쇄됩니다.

고쳐 쓰다

빼고 다 원하신다 /dev/sdaX

fdisk -l | grep -o '^/dev/sd[b-z][0-9]'

답변2

다음 명령을 사용하십시오. fdisk -l | awk '/\/dev\/sdb[0-9]/ {print $1}'

답변3

당신은 그것을 사용할 수 있습니다 sed...

디렉토리 경로에 가 포함되어 있으므로 sed 명령을 다음과 같이 구분하기 /로 결정했습니다 _(일반적으로 /,어느기호를 구분 기호로 사용할 수 있습니다.)

fdisk -l | sed -n 's_^\(/dev/[^ ]*\) .*$_\1_p'

답변4

루트 액세스 권한이 없는 사용자는 간단한 방법을 사용할 수 있습니다 ls.

ls /dev/sd* | grep -o '/dev/sd[a-z][1-9]'

필요에 따라 정규식을 편집합니다.

고쳐 쓰다:@StéphaneChazelas가 언급했듯이 장치 파일이 있다고 해서 기본 장치의 존재가 확인되는 것은 아닙니다. 대신 쿼리하는 것이 더 안전합니다 /proc/partitions.

awk '$NF ~ /^sd[a-z][0-9]+/ {print "/dev/" $NF}' < /proc/partitions

관련 정보