match1 の前の n 行と match2 まで match1 の後の行を印刷します。

match1 の前の n 行と match2 まで match1 の後の行を印刷します。

grep -B n -A m matchを使用して、マッチングの前後にn行とm行を印刷する方法を知っています。また、sedを使用してmatch1からmatch2に印刷する方法も知っています。しかし、これを1行にどのように組み合わせることができますか?

> cat file.txt

    bar
    foo
    bar
    baz
    match1
    qux
    blah
    bleep
    match2
    boop
    blah

n=2 の出力例:

    bar
    baz
    match1
    qux
    blah
    bleep
    match2

ベストアンサー1

同じ入力を共有するようにコマンドをグループ化して引き継ぎをgrep終了するときは、次のようにします。sed

{ grep -B2 -m1 match1; sed '/match2/q'; } < infile

おすすめ記事