我对shell编程很新,所以请忍受我的无知,我想写一个sh脚本我想做的事情
1)。找到文件中的模式<完成>
2)。找到模式后,读取紧跟在模式之后的所有行,以“at”开头。
摘自我的日志文件
SQLError.dispatchException(SQLError.java:299)
at blah.blah.blah.blah(blah.java)
at blah.blah.blah.blah(blah.java)
at blah.blah.blah.blah(blah.java)
at blah.blah.blah.blah(blah.java)
Caused by: java.sql.SQLException
在这里,我能够找到模式SQLError.dispatchException
,但不知道如何阅读以at
开头的所有行,并检查Caused by
是否在行开始后at
出现1}}。
答案 0 :(得分:0)
有人这样吗?
awk '/SQLError.dispatchException/ {f=1} f && /^at/' file
at blah.blah.blah.blah(blah.java)
at blah.blah.blah.blah(blah.java)
at blah.blah.blah.blah(blah.java)
at blah.blah.blah.blah(blah.java)
防止打印以at
开头的其他部分
awk '/SQLError.dispatchException/ {f=1} f && /^at/; !/^at/ {f=1}' file
答案 1 :(得分:0)
sed -n '/SQLError.dispatchException/ {
:at
N;s/\nat[^[:cntrl:]]*$/&/
t at
s/\n[^[:cntrl:]]*$//p;}' YourFile