为什么要为grep乘以输出行

时间:2017-08-11 11:09:28

标签: regex grep

echo  "lineabc"  | grep -oP  '\w+?(?!abc\b)' 
l
i
n
ea
b
c

为什么结果中包含这么多行?
结果呢?
'\w+?(?!abc\b)'在这里意味着什么?

2 个答案:

答案 0 :(得分:0)

您使用了grep的-o选项,如果您阅读手册页以了解此选项的作用,您就会明白为什么有多行'输出:

  -o, --only-matching
              Print only the matched (non-empty) parts of a matching 
              line, with each such part on a separate output line.

答案 1 :(得分:-1)

/ \ W +?(?ABC \ B)/克

\ w +?匹配任何单词字符(等于[a-zA-Z0-9 _])

+?量词 - 在一次和无限次之间匹配,尽可能少,根据需要扩展(懒惰)

否定前瞻(?!abc \ b)断言下面的正则表达式不匹配 abc字面匹配字符abc(区分大小写)

\ b在单词边界处断言位置(^ \ w | \ w $ | \ W \ w | \ w \ W)

全局模式标记 g修饰符:全局。所有比赛(首场比赛后不返回)