Regex 为什么我的正则表达式中的换行符与整行匹配?

Regex 为什么我的正则表达式中的换行符与整行匹配?,regex,Regex,据我所知,正则表达式 ^1.*\n 应该匹配以1开头的行,后跟任意数量的字符和换行符,然后停止。当使用Perl正则表达式时,它实际做的是匹配一行,该行以1开头,后跟任意数量的字符和换行字符,然后匹配下一行的全部内容: -bash-3.2$ cat testfile 1 dghdfgdgdgdfgdfggd 2 dghdfgdgdgdfgdfggd 3 dghdfgdgdgdfgdfggd 1 dghdfgdgdgdfgdfggd 2 dghdfgdgdgdfgdfggd 3

据我所知,正则表达式

^1.*\n
应该匹配以1开头的行,后跟任意数量的字符和换行符,然后停止。当使用Perl正则表达式时,它实际做的是匹配一行,该行以1开头,后跟任意数量的字符和换行字符,然后匹配下一行的全部内容

-bash-3.2$ cat testfile
1   dghdfgdgdgdfgdfggd
2   dghdfgdgdgdfgdfggd
3   dghdfgdgdgdfgdfggd
1   dghdfgdgdgdfgdfggd
2   dghdfgdgdgdfgdfggd
3   dghdfgdgdgdfgdfggd
1   dghdfgdgdgdfgdfggd
2   dghdfgdgdgdfgdfggd
3   dghdfgdgdgdfgdfggd

-bash-3.2$ grep -P '^1.*' testfile
1   dghdfgdgdgdfgdfggd
1   dghdfgdgdgdfgdfggd
1   dghdfgdgdgdfgdfggd
-bash-3.2$ grep -P '^1.*\n' testfile
1   dghdfgdgdgdfgdfggd
2   dghdfgdgdgdfgdfggd
1   dghdfgdgdgdfgdfggd
2   dghdfgdgdgdfgdfggd
1   dghdfgdgdgdfgdfggd
2   dghdfgdgdgdfgdfggd
事实上,我正在研究一个更长的多行模式,想知道为什么它不起作用,并追踪到上面的问题。我的问题主要是“为什么会这样”,但我很高兴听到我想要的比赛


谢谢默认情况下,
grep
输出匹配的行。要覆盖该行为,请传递
-o
选项

grep -oP '^1.*\n' testfile`. 
见:

-o

--仅匹配

仅打印匹配行中匹配的(非空)部分,每个部分都在单独的输出行上


您是否尝试通过
-oP
选项<代码>grep-oP“^1.*\n”测试文件。我就知道!多性感的女人啊。谢谢:)