grep 输出“开始”选项

grep 输出“开始”选项

是否有选项可以从 grep 获取输出,但该输出需要以我要搜索的单词开头?这真的很难解释,所以让我在这里举一个例子:

当您想在 Cisco 运行配置中搜索某些内容时,我会使用以下命令:

show running-configuration | b 10.0.1.202 – 输出将从第一次提到 10.0.1.202 的地方开始。

例如,我的 CentOS 上有一个很长的 dhcp.leases 文件,但是我如何才能 grep | b 10.0.1.202 以便我的输出从第一次找到 10.0.1.202 的地方开始,并在其之后列出其余的输出?

亲切的问候,

答案1

查找地址但显示无限数量的上下文行(用于-A“之后的行”,类似地-B“之前的行”,-C“周围的行”):

cat dhcp.leases | grep -A9999999 '10\.0\.1\.202'

虽然就你的情况而言大概只想要 10-20 行,而不是全部,因此您应该在之后指定所需的数量-A

我通常使用 awk 来裁剪特定范围(例如从正则表达式 1 到正则表达式 2):

cat dhcp.leases | awk '/10\.0\.1\.202/ {found=1} found {print}'
cat dhcp.leases | awk '/10\.0\.1\.202/{f=1}f'

cat somefile | awk '/^Begin:/{ok=1} ok{print} /^End:/{ok=0}'

相关内容