PARTUUID가 주어지면 blkid에서 /dev/sd*를 가져옵니다.

PARTUUID가 주어지면 blkid에서 /dev/sd*를 가져옵니다.

initramfs에 /dev/disk/by-*가 없습니다.

PARTUUID가 있고 해당 블록 장치를 가져와야 합니다.

이것이 내 결과입니다blkid

/dev/sda1: UUID="7304-E3F2" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="05699fcc-97f6-4792-9dec-f9135552e92f"
/dev/sda2: UUID="da0ff3d2-432b-4306-8ec4-a032b934544a" TYPE="ext4" PARTUUID="9f6874df-b700-4e59-a83f-3ce3d4485799"
/dev/sda3: UUID="3c5275a3-a8ed-4884-bc02-a5163acc58bb" TYPE="swap" PARTUUID="3505f9df-99f4-4b4c-859d-1381db86d8f0"
/dev/sdb: TYPE="isw_raid_member"
/dev/sdc: TYPE="isw_raid_member"
/dev/sdd1: LABEL="Recovery" UUID="F066142D6613F2D8" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="cc6765e3-f0e6-4007-95ea-ac896bf8f824"
/dev/sdd2: UUID="5414-7544" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="1c635ea8-098f-4680-8e9b-1926401eb77b"
/dev/sdd3: PARTLABEL="Microsoft reserved partition" PARTUUID="c7da9e6d-ce60-4731-81cf-e332a4c88e39"
/dev/sdd4: UUID="DCFE1841FE1815FC" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="25b78542-0b82-4eef-96a0-51dda3dc4ec7"
/dev/md126: PTUUID="b4c4aef3-c86e-4719-8bbc-f101540327b8" PTTYPE="gpt"
/dev/md126p1: LABEL="DataWindows" UUID="088E077E8E076412" TYPE="ntfs" PARTLABEL="Basic data partition" PARTUUID="c70196d3-60fc-4211-9b2a-4ad47a206957"
/dev/md126p2: LABEL="DataLinux" UUID="47ea9736-2de7-40ba-bf05-9660484ceea0" TYPE="ext4" PARTLABEL="Microsoft basic data" PARTUUID="86610416-00ce-4e8e-8682-4a46e4cae0da"
/dev/sde1: SEC_TYPE="msdos" LABEL="efi" UUID="0A3E-9ABE" TYPE="vfat" PARTLABEL="msdos" PARTUUID="3948166f-7d1b-4b75-ad77-5ed5ad5f8e37"
/dev/sde2: LABEL="platform" UUID="7503d533-1a0c-47ed-9048-e96c7810bb0a" TYPE="ext4" PARTLABEL="platform" PARTUUID="9d69c3d4-4175-4a46-baba-64f95bcea861"
/dev/sde3: LABEL="data" UUID="9a589cce-1d27-4d60-9589-d0cbae228517" TYPE="ext4" PARTLABEL="data" PARTUUID="79067919-3db0-4c63-b78e-b72ce880cd42"

sedor 을 사용하면 grep어떻게 /dev/sda1얻을 수 있나요 05699fcc-97f6-4792-9dec-f9135552e92f?

답변1

직접 사용할 수 있는 매칭 기능 blkid.

예:

$ blkid --match-token PARTUUID=05699fcc-97f6-4792-9dec-f9135552e92f -o device
/dev/sda1

답변2

grep+cut을 사용하면 다음과 같습니다.

blkid | grep 05699fcc-97f6-4792-9dec-f9135552e92f | cut -d ":" -f1

grep+sed를 사용하세요.

blkid | grep 05699fcc-97f6-4792-9dec-f9135552e92f | sed -e 's/^\(.*\):.*$/\1/'

답변3

GNU Awk해당 match()기능을 사용하고 캡처링 그룹을 배열과 일치시킬 수 있습니다 . 즉 $NF, 첫 번째 열 값을 포함하는 마지막 열 값은 다음과 같습니다./dev/sda1:

blkid | awk '$1=="/dev/sda1:" && match($NF,/PARTUUID=\"(.*)\"/, arr){print arr[1]; exit}'
05699fcc-97f6-4792-9dec-f9135552e92f

(또는) 사용하고 싶다면 다음을 수행하십시오 05699fcc-97f6-4792-9dec-f9135552e92f./dev/sda1

blkid | awk '/PARTUUID=\"05699fcc-97f6-4792-9dec-f9135552e92f\"/{sub(/[:]$/,"",$1); print $1}'
/dev/sda1

답변4

모든 것이 sed더 쉬워집니다.

blkid | sed -r '/05699fcc-97f6-4792-9dec-f9135552e92f/!d;s/(^\/.*\/.*):.*/\1/'

출력은 다음과 같습니다:

/dev/sda1

설명하다:

sed접근 방식은 두 부분으로 나눌 수 있습니다. 첫 번째는 다음과 같습니다

sed '/05699fcc-97f6-4792-9dec-f9135552e92f/!d

이것은 간단한 패턴 일치입니다. 일치하는 줄을 제외한 모든 줄을 제거합니다.

두 번째 부분은 다음과 같이 나뉩니다 ;.

sed -r 's/(^\/.*\/.*):.*/\1/'

sed간단한 교체 패턴을 사용 s/pattern/replace_pattern/하지만 인덱스는 에 배치됩니다 (). 이것은 \1의 패턴에 대한 유일한 링크입니다 (). 바라보다이것지도 시간.

관련 정보