Perl 仅打印从起点到终点的内容

Perl 仅打印从起点到终点的内容,perl,sed,awk,grep,Perl,Sed,Awk,Grep,要只打印从开始到结束的内容吗 例如: Started at Mon Nov 25 14:30:02 ALMT 2013 Load average for db1 is 10 which is less than 100 Load average for db2 is 3 which is less than 100 Load average for db3 is 6 which is less than 100 Load average for db4 is 5 which is less th

要只打印从开始到结束的内容吗

例如:

Started at Mon Nov 25 14:30:02 ALMT 2013
Load average for db1 is 10 which is less than 100
Load average for db2 is 3 which is less than 100
Load average for db3 is 6 which is less than 100
Load average for db4 is 5 which is less than 100
Load average for db5 is 5 which is less than 100
Mon Nov 25                                                                                 page
some other data
some other data
some other data
预期:

Started at Mon Nov 25 14:30:02 ALMT 2013
Load average for db1 is 10 which is less than 100
Load average for db2 is 3 which is less than 100
Load average for db3 is 6 which is less than 100
Load average for db4 is 5 which is less than 100
Load average for db5 is 5 which is less than 100
Mon Nov 25                                                                                 page
我试着这样做:

perl -0777 -lpe 's|Started .*? page||xsg' 1
但这会删除我要打印的整个区域。

请尝试以下操作:

$ perl -0777 -lpe 's|.*(Started .*? page).*|$1|xsg' 1

像这样的事情可能会发生:

$ awk '/^Started/ {p=1} p; /page$/ {p=0}' file
Started at Mon Nov 25 14:30:02 ALMT 2013
Load average for db1 is 10 which is less than 100
Load average for db2 is 3 which is less than 100
Load average for db3 is 6 which is less than 100
Load average for db4 is 5 which is less than 100
Load average for db5 is 5 which is less than 100
Mon Nov 25                                                                                 page
  • /^Started/{p=1}
    当它找到以“Started”开头的字符串时,则标志
    p
    设置为1
  • p
    在标志
    p
    为真时打印该行
  • /page$/{p=0}
    当它找到以“page”结尾的字符串时,则标志
    p
    设置为0

还有,():

或与。但请注意,如果遇到“开始”标记而不是“结束”,它将打印从开始标记到文件结尾的所有内容

sed -n '/^Started/, /page/p' file

呃,我看不到任何结束点。只需向右滚动,有“开始于…”,结束是“25页”,所以记录的“结束”是“开始”行中的日期,后面是字符串“页”?“页面”前有大量空白?你必须明确,因为我们看不懂你的心思:你必须告诉我们你需要什么。Strange在我的控制台上不工作,只需打印所有输出:/n检查你的示例输入是否匹配以下内容:一行以“Started”开头,一行以“page”结尾。哇,这太短了,@1_CR!非常感谢,我添加它作为另一个选项,并+1您的答案,因为它也使用这种逻辑。
sed -n '/^Started/, /page/p' file
perl -0777 -ne 'print /(Started .*? page)/xsg' 1