我的命令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}'