我有包含此输出的文件,并且我正在尝试从我的文件中收集有用的数据。
R1#show ip route 192.168.5.130
Routing Descriptor Blocks:
* 192.168.5.128, from 192.168.5.162, 00:20:16 ago, via Serial0/0/0.2
Route metric is 2172416, traffic share count is 1
Total delay is 20100 microseconds, minimum bandwidth is 1544 Kbit/sec
Reliability 255/255, minimum MTU 1500 bytes
Loading 1/255, Hops 1
我想 grep match 如果我上面的段落有单词“metric”,那么它应该显示整个段落而不仅仅是该行。
还有一种方法可以检查条件:如果 metric==2172416 则返回整个段落。
我想知道最简单的方法,因为我将在不同的场景中应用它。
另外,如果我的文件中有此内容,如何才能仅获取 4 月 11 日的行?我可以在这里使用通配符吗?
CPU0:Apr 11 05:22:04.768 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-INTCHG :
CPU0:Apr 11 05:22:04.769 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG :
CPU0:Apr 11 05:22:04.769 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG :
CPU0:Apr 11 06:09:53.066 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-INTCHG :
CPU0:Apr 11 06:09:53.066 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG :
CPU0:Apr 11 06:09:56.707 UTC: pim[1182]: %ROUTING-IPV4_PIM-5-NBRCHG :
答案1
awk '/Route metric is 2172416/,/Loading/' file.txt
上面的命令打印行从路由度量为 2172416并以加载中线
awk '/Apr 11/' second_file.txt
grep 'Apr 11' second_file.txt
上面的命令将打印具有4月11日。你也可以使用 grep
答案2
假设第一个文件中的数据与您显示的完全一样,有空行,您可以使用 GNU grep
(或其他一些)并询问周围的上下文:
grep -B 5 -A 6 -F 'Route metric is 2172416' file
这将返回匹配之前的 5 行上下文,以及匹配之后的 6 行上下文,以及包含固定字符串 的行Route metric is 2172416
。
要获取所有提及的行Apr 11
:
grep -F 'Apr 11' file
或者,如果您需要更具体的匹配标准
grep '^CPU0:Apr 11' file
...这要求给定的模式在行的开头匹配。