grepコマンドで-Aパラメータを使用して1行ずつ印刷できますか?

grepコマンドで-Aパラメータを使用して1行ずつ印刷できますか?

ファイルから読み込むとき、ファイルのすべての「x」インスタンス(ライン1)、次の行(ライン2)、および次の行(ライン3)をgrepしたいのですが… 6、7、10、11行。これを行う方法はありますか?

答え1

この回答では、入力ファイルがプレーンテキストであると仮定します。あるいは、入力ファイルが実際にXMLまたはJSONまたは類似している場合は、その形式に適したツールを使用する必要があります。

努力する:

awk 'BEGIN{a[0];a[1];a[2];a[3];a[6];a[7];a[10];a[11]} /x/{n=NR} n && (NR-n) in a'

仕組み:

  • BEGIN{a[0];a[1];a[2];a[3];a[6];a[7];a[10];a[11]}

    aこれにより、印刷する各行の連想配列が初期化されます。

  • /x/{n=NR}

    その行にある場合は、x変数をn現在の行番号に設定します。x正規表現で処理されることに注意してください。

  • n && (NR-n) in a

    n割り当てられていてNR-n印刷したい行の1つである場合は、その行を印刷してください。

関連情報