ファイルから読み込むとき、ファイルのすべての「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つである場合は、その行を印刷してください。