在文件中,查找某个关键字时如何打印关键字上下文:比如 关键字前后3行?Windows Powershell select-string 、Linux grep -A -B

本文介绍了如何在Linux和Windows环境下,利用grep和Powershell的Select-String命令查找文件中关键字及其前后3行上下文。详细讲述了命令参数的使用,以及如何提取和处理查找结果,以满足配置文件关键信息的快速核查需求。
摘要由CSDN通过智能技术生成

前言

最近有个需求,核查对比多台网络设备的配置,需要将设备配置文件中的关键信息(比如:设备的带外地址、Loopback地址等)提取出来。
举个例子:

某台设备的配置文件如下,我想查找该设备Loopback0地址:
举例
一个文本文件的话,我们直接用notepad/notepad ++ 直接Ctrl + F Loopback0,找到Loopback0下面2行即可找到其地址,但是当多个文件时,再一个个找就很麻烦了。

为了方便高效,又懒得用Python写脚本遍历查找(一是Python能力有限,逻辑处理复杂,二是当时时间紧急,着急核查配置),想到了用Linux里面的grep命令直接操作,后面又想到Windows平台有没有类似的命令呢,于是一番查找资料,发现Windows上使用Powershell里面的Select-String也可以实现类似的功能。

经过实验,都可以完美满足我的需求,现分享给大家。

一、Linux 环境使用 grep 实现需求

Linux环境这里为了方便,没装虚拟机,用的是Cygwin(Cygwin是一款可以在Windows上模拟Linux环境的工具),只用来练习Linux上面的命令完全够用。

grep命令就不多说了,Linux 平台上很强大的查找命令,参数很多,详细参数可输入 grep --help 查看命令使用帮助,更详细的使用方法可 man grep 查看 。这里只介绍和我的需求相关的两个参数:

  • -A 打印后面 n 行上下文, n是参数
  • -B 打印前面 n 行上下文,n是参数
    grep我的需求其实很简单,还是以查找Loopback0地址为例,直接用grep -A 命令查看上下文几行就满足了。
  1. 防止出现干扰项,关键字加上正则^, 表示查找以interface LoopBack0开头的文本,我们只要关键字后面2行的上下文内容,因此参数就是-A 2,后面直接跟关键字和文件路径,这里的话文件就在当前目录下,因此直接写文件名(可用通配符过滤&#
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值