Wiefs 명령 출력을 처리하는 방법은 무엇입니까?

Wiefs 명령 출력을 처리하는 방법은 무엇입니까?

내 명령은 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}'

관련 정보