5

我正在尝试 grep 表达式(例如BEGINEND)之间的文本,这些文本可能与以下内容不在同一行:

perl -wln -e 'm/BEGIN.+END/s and print;' < file.txt

请注意,由于s修饰符 (in m/RE/s),"."允许匹配换行符(以及其他任何内容)。

这使模式可以将特定顺序的单词与它们之间的任何内容匹配(即模式BEGIN在一行上,而模式END在下面的几行上)。如果这两个模式在同一行上,这可以正常工作,但当它跨越多行时则不行。我在这里想念什么?

4

1 回答 1

7

其实我确实发现了缺失的部分!我需要使用该-0777选项来搜索记录的整个文件,并使用以下方法打印匹配的表达式print $&

perl -wln -0777 -e 'm/BEGIN.+END/s and print $&;' < file.txt
于 2013-02-17T20:51:49.980 回答