`GNU不是Unix的Grep Bug吗?

`GNU不是Unix的Grep Bug吗?,grep,Grep,(标题必须至少包含15个字符。该死。) 我想为UUID(UUID=“[^”]*”)过滤blkid的输出,我想为没有UUID的每一行获取一个空行。 我正在做: sudo blkid | grep -e '^' -e 'UUID="[^"]*"' 或 sudo blkid | grep-e'$'-e'UUID=“[^”]*”' 如果我在没有-o开关的情况下运行它,Grep就可以这样做,但是当我使用-o开关时,“^”$”的匹配项就消失了。我希望没有UUID模式的每一行都有一个空行。(=仅与^(或$)

(标题必须至少包含15个字符。该死。)

我想为UUID(
UUID=“[^”]*”
)过滤
blkid
的输出,我想为没有UUID的每一行获取一个空行。 我正在做:

sudo blkid | grep -e '^' -e 'UUID="[^"]*"'
或 sudo blkid | grep-e'$'-e'UUID=“[^”]*”'

如果我在没有
-o
开关的情况下运行它,Grep就可以这样做,但是当我使用
-o
开关时,“^”$”的匹配项就消失了。我希望没有UUID模式的每一行都有一个空行。(=仅与^(或$)匹配的每一行)

我期望这是错误的还是这是一个grep错误?我能用grep实现我的目标吗

编辑--样本输入

这是我的
blkid
输出的内容。真实故事:

/dev/sdbX: UUID="foo" TYPE="LVM2_member" 
/dev/sdbY: UUID="bar" TYPE="LVM2_member" 
/dev/mapper/this_wont_have_an_uuid TYPE="DM_snapshot_cow" 
/dev/mapper/this_wont_have_an_uuid2 TYPE="DM_snapshot_cow"
(以下假设sudo blkid>|blkid已运行)

^这将为UUID规格上色并匹配每一行:

^这将产生:

UUID="foo"
UUID="bar"

(UUID更少的行消失了:()。

如果您没有找到
grep
版本,您可以使用
sed
实现您的目标

blkid | sed '/UUID=/!s/.*//'

好的,我检查了手册。它与手册一致:

-o,--only matching仅打印匹配行中匹配的(非空)部分,每个部分位于单独的输出行上。


括号中的表达式显然是这里的关键--^或$是一个«空的«,匹配的部分。

你能显示
blkid
的输出吗?目前,在没有这些信息的情况下预测grep的行为看起来有点复杂。为什么要回滚修订版?有离题注释和
编辑
并不能提高可读性。它不能只能用grep完成。在bash模式下使用bash/perl/script、sed或vim。在vim模式下,可以使用:
:g!/UUID=“[^”]*”/s/*/
在控制台模式下运行vi确定,因此我检查了手册。它与之一致:`-o,--仅匹配打印匹配的(非空)匹配行的一部分,每一部分都在单独的输出行上。`括号内的表达式显然是这里的键--^或$是一个空的匹配部分。