2016-08-17 9 views
0

後、私は私が何をしたいのかというのawk - パターンの間に印刷する - 二行最初

y 
z 
pattern1 
line 
1 
1 
1 
patern2 
x 
k 

のようなファイルを持っているが、以下の制限

    との2つのパターンの内容を印刷していますパターンを印刷
  1. 避け
  2. は、第一のパターンの後に次の行をスキップ

これは私の出力ファイルが

awk '/pattern1/{flag=1;next}/pattern2/{flag=0}flag' file 

それを行う方法上の任意のアイデアを使用して、それらを無視して、これまでのところ、私はパターン間に印刷することができています。この

1 
1 
1 

のようになりますことを意味しますか?

+1

ここをクリック(印刷):http://stackoverflow.com/questions/38972736/how-to-select-lines-between-two-patterns/ –

+0

@JamesBrown:実際にはそこから取得しましたが、私は私の必要に応じてそれを修正することができないようです... – Thanos

+0

出力をパイプするのが大丈夫なら、あなたは 'awk 'NR> 1''、' sed' 1d''、 'tail -n + 2など – Sundeep

答えて

1

これを試してみてください:

awk '/pattern1/{i=1;next}/patern2/{i=0}{if(i==1){i++;next}}i' File 
0

あなたはPATTERN1が一致開始行番号を記録することができますnextを保存することができ

awk '/pattern1/{s=NR+1;p=1;next}/pattern2/{p=0}p&&NR>s' file 

を何行が両方pattern1 and pattern2

1
$ awk '/pattern1/,/patern2/{i++} /patern2/{i=0} i>2' file 
1 
1 
1 
一致していないがある場合

の間patterns増分i2の後にレコードが印刷を開始(i>2)、終了マーカーにiをリセットします。

関連する問題