我有一个像这样的电子邮件日志文件:
2013-09-11 12:02:08 INFO: ------------------------------
2013-09-11 12:02:08 INFO: Javamail session sending email
2013-09-11 12:02:08 INFO: Session properties:
2013-09-11 12:02:08 INFO: com.hof.email.starttime=20130911120208
2013-09-11 12:02:08 INFO: mail.smtp.auth=true
2013-09-11 12:02:08 INFO: mail.smtp.connectiontimeout=60000
2013-09-11 12:02:08 INFO: mail.smtp.host=mailserver
2013-09-11 12:02:08 INFO: mail.smtp.port=25
2013-09-11 12:02:08 INFO: mail.smtp.timeout=60000
2013-09-11 12:02:08 INFO: mail.transport.protocol=smtp
2013-09-11 12:02:08 INFO: From: Support
2013-09-11 12:02:08 INFO: To: Customer
2013-09-11 12:02:08 INFO: Subject: Your Report Data
2013-09-11 12:02:08 INFO: Message ID: <id>
2013-09-11 12:02:09 INFO: Email sent successfully
2013-09-11 12:02:09 INFO: Javamail session ended
2013-09-11 12:02:09 INFO: ------------------------------
我需要做的是如果电子邮件主题与特定字符串匹配,则打印整条记录。
也就是说,当
Subject = 'Your Report Data'
时,我想要做的是,在主题匹配中第n-1个出现 '------------------------------'
到第一个出现 '------------------------------'
的所有行都被打印。
grep
命令,并带有-A
和-B
选项。 - mnagel----...--
行始终与Subject:
行相同距离),那么在这种情况下“俗气”的方法是:grep -A 4 -B 12 "INFO:.*Subject: " log.txt
。 - lurker