是否有选项可以从 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}'