我对 bash 编程还很陌生,我正在尝试找出一种方法,从相当长的日志文件中“grepping”出具有特定模式的一行,然后从我刚刚得到的行开始grep -w "pattern" filename
。我需要到达 grep-line 之前的一行。
我以为我可以通过行号访问它,但我似乎只能找到通过行号读取某一行的解决方案,如果我已经知道该行号是什么。
有任何想法吗?
答案1
您可以告诉grep
输出额外的行语境围绕每条匹配的线例如
grep -w "pattern" -A5 filename
匹配后的 5 行上下文,或
grep -w "pattern" -B5 filename
比赛开始前 5 行背景信息,或者
grep -w "pattern" -C5 filename
前后上下文各 5 行。因此,对于你的情况,你可以这样做
grep -w "pattern" -B1 filename | head -1
查找“模式”并打印上下文的单行前导行,然后仅使用 打印上下文行。使用或代替 的head
其他解决方案也是可能的。awk
sed
grep