我已经知道如何使用grep
或awk
匹配日志文件中的某些内容,但是有没有办法执行以下操作?
这样,如果正在搜索的内容是在 BEGINNING 和 END 的上下文中,您可以只搜索您正在搜索的内容发生的上下文。日志文件如下所示:
<several-1000-lines>
...[BEGINX]
some log a
<several-1000-lines>
...[First-string-i-search-for]
<several-1000-lines>
some log b
...[ENDX]
<several-1000-lines>
Run Code Online (Sandbox Code Playgroud)
然后我会在搜索后得到这样的输出[First-string-i-search-for]
:
...[BEGINX]
some log a
<several-1000-lines>
...[First-string-i-search-for]
<several-1000-lines>
some log b
...[ENDX]
Run Code Online (Sandbox Code Playgroud)
$ cat tst.awk
BEGIN {
beg = "[BEGINX]"
mid = "[First-string-i-search-for]"
end = "[ENDX]"
}
index($0,beg) {
gotBeg = 1
gotMid = 0
buf = ""
}
gotBeg {
buf = buf $0 ORS
if ( index($0,mid) ) {
gotMid = 1
}
if ( index($0,end) ) {
if ( gotMid ) {
printf "%s", buf
}
gotBeg = 0
}
}
Run Code Online (Sandbox Code Playgroud)
$ awk -f tst.awk file
...[BEGINX]
some log a
<several-1000-lines>
...[First-string-i-search-for]
<several-1000-lines>
some log b
...[ENDX]
Run Code Online (Sandbox Code Playgroud)
以上假设: