如何处理wipefs命令输出?

如何处理wipefs命令输出?

我的命令wipefs /dev/sdX给出以下输出:

offset               type
----------------------------------------------------------------
0x111                ext4   [filesystem]
                     UUID:  1111111-222222-333333-4444-5555555555

如何获取 UUID 值仅作为单个命令行的输出?

答案1

如果你有 GNUgrep(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}'

相关内容