내 명령은 wipefs /dev/sdX
다음과 같은 출력을 제공합니다.
offset type
----------------------------------------------------------------
0x111 ext4 [filesystem]
UUID: 1111111-222222-333333-4444-5555555555
단일 명령줄의 출력으로만 UUID 값을 얻으려면 어떻게 해야 합니까?
답변1
GNU가 있는 경우grep(1)
-P
이고 귀하의 버전이 또는 옵션을 지원 --perl-regexp
하는 경우 긍정적인 뒤돌아보기 어설션을 사용할 수 있습니다.
grep -Po "(?<=UUID: ).*$" <(wipefs /dev/sd)
시험
$ cat file
offset type
----------------------------------------------------------------
0x111 ext4 [filesystem]
UUID: 1111111-222222-333333-4444-555555555
$ cat file | grep -Po "(?<=UUID: ).*$"
1111111-222222-333333-4444-5555555555
~에서grep(1)
매뉴얼 페이지
-o, --only-matching Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line. -P, --perl-regexp Interpret PATTERN as a Perl regular expression (PCRE, see below). This is highly experimental and grep -P may warn of unimplemented features.
정규식 설명:
Positive Lookbehind 어설션을 사용하면 (?<=UUID: )
줄 끝 뒤의 문자열만 인쇄됩니다 $
.
답변2
awk를 사용하세요:
awk -F: '$1 ~ /UUID/{print $2}'