测试文本, a.txt
123
456
   789
这里是简单的文本
使用grep多行匹配
grep -Pzo "123\s456" a.txt
-P: 启用Perl正则表达式模式。
 -z: 允许多行匹配,即使匹配跨越了换行符的行。
 -o: 只输出匹配的部分。
这里能匹配到
123
456
但是有的时候也匹配不到,为什么呢
 使用xxd查看
xxd a.txt

 使用xxd可以看到二进制下的文本内容
如果此时中间有0a那么就是导致匹配不上的原因
\s 无法匹配这个 0a 按理来说 0a 代表 \r ,\s是能够匹配的
有0a的情况下匹配多行文本
grep -Pzo "123\x0a\s456" a.txt
这里加上了这个 0a进行匹配
有没有大佬可以解释下为啥 \s 匹配不了 0a



















