grep 出力の「begin」オプション

grep 出力の「begin」オプション

grep から出力を取得するオプションはありますが、その出力は検索している単語で始まる必要がありますか? これは説明するのが非常に難しいので、ここで例を挙げてみましょう。

Cisco 実行コンフィギュレーションで何かを検索する場合は、次のコマンドを使用します。

show running-configuration | b 10.0.1.202 - 出力は、10.0.1.202 が最初に記載された場所から始まります。

たとえば、CentOS に dhcp.leases という非常に長いファイルがありますが、 | b 10.0.1.202 を grep して、出力が 10.0.1.202 が最初に見つかった場所から始まり、出力の残りがその後にリストされるようにするにはどうすればよいでしょうか。

敬具、

答え1

アドレスを Grep しますが、コンテキスト行を無限に表示します ( -A「後の行」、同様に-B「前の行」、-C「周囲の行」に を使用します)。

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

しかしあなたの場合はおそらく全体ではなく 10 ~ 20 行だけが必要なので、 の後に希望する量を指定する必要があります-A

私は通常、特定の範囲(例:正規表現 1 から正規表現 2)を切り取るために awk を使用します。

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}'

関連情報