
是否有一個選項可以從 grep 獲取輸出,但該輸出需要以我正在搜尋的單字開頭?這確實很難解釋,所以我舉個例子:
當您想要在 Cisco 運行設定中搜尋某些內容時,我會使用以下命令:
顯示運行配置 | b 10.0.1.202 - 輸出將從第一次提到 10.0.1.202 的位置開始。
例如,我的 CentOS 上有一個很長的 dhcp.leases 文件,但我如何才能 grep | b 10.0.1.202 好讓我的輸出從第一次找到 10.0.1.202 的位置開始,然後列出其餘的輸出?
親切的問候,
答案1
Grep 會尋找位址,但顯示無限量的上下文行(用於-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}'