我有以下文本文件:
a
a
我正在尝试匹配以a
使用以下命令开头的行:pcregrep -M '^a'
. 它只匹配第一个a
而不匹配第二个。有谁知道为什么?我使用pcregrep
它是因为这是一个简单的问题,稍后我将扩展到更复杂的场景。
谢谢!
更新
原因是我使用的是 Mac OS,其中每个换行符都是回车符。因此,pcgrep 将文件内容(即 a\ra)解释为一行,并且我的正则表达式仅返回a
该行的第一行,因为这就是我在表达式中指定的全部内容。使用 pcregrep 的解决方案是指定换行符类型。“换行类型”是指正则表达式引擎解释为指定行尾的字符。因此,如果我们在这种情况下指定换行符类型为回车符 (\r),pcregrep 会将我的文件内容解释为两行,并将匹配并返回两行。
我的正则表达式的固定版本是pcregrep -M -N CR '^a'
,其中的-N CR
意思是“换行符类型是回车”。