该消息包含检测报告:
<detection_report>
Test 1
Test 2
Test 3
</detection_report>
---------------------------------------------
Have a nice day
我想在<detection_report>
标签之间选择部分,包括这两个标签。
我写了以下代码。
The message has detection report\:((.|\n|\r)+)(\<\/detection_report\>)
但它不起作用。任何人都可以帮助我。
答案 0 :(得分:1)
这是一种完成工作的方法:
perl -ane 'print if /<detection_report>/ .. /<\/detection_report>/' in.txt
<强>输出:强>
<detection_report>
Test 1
Test 2
Test 3
</detection_report>
答案 1 :(得分:1)
使用perl one-liner
perl -ane 'print $1 // $_ if m{(detection_report.*)} .. m{(.*?</detection_report>)}' file.txt
这与M42
建议的内容很接近,但它考虑了标签不存在于自己的行上的可能性。
请注意,如果此数据是HTML或XML,则应使用实际的HTML或XML Parser来提取此数据。
答案 2 :(得分:0)
你去了:
$ cat detection.txt
The message has detection report:
<detection_report>
Test 1
Test 2
Test 3
</detection_report>
---------------------------------------------
Have a nice day$ cat regex.pl
#!/usr/bin/perl
while(<>){
$input.=$_
}
($body) = $input =~ m/(<.*>)/ms;
print $body
$ cat detection.txt | perl regex.pl
<detection_report>
Test 1
Test 2
Test 3
</detection_report>$