行一致パターンに続く行数を計算します。

行一致パターンに続く行数を計算します。

パターン間の行数を計算し、ファイル内の行数をリダイレクトする方法は?

例:

PATTERN FOUND 
rows 
rows 
rows 
PATTERN FOUND 
rows 
rows

予想される結果は次のとおりです。

3
2

答え1

使用awk:

$ awk -v RS='PATTERN FOUND' 'NF{print NF}' infile
3
2

または、rows実際に文セットがある場合は、次のようにすることができます。

$ awk -v RS='PATTERN FOUND' -F'\n' 'NF{print NF-2}' infile >output

上記はawk次のサンプル入力ファイルです。

PATTERN FOUND
rows
rows
rows
PATTERN FOUND
rows
rows
Here PATTERN FOUND :
zero first
second

fourth fifth sixth and last

結果は次のとおりです。

3
2
4

空白行を削除して計算したくない場合は、次の手順を実行します。

awk -v RS='PATTERN FOUND' -F'(\n)+' 'NF{print NF-2}' infile

空白行と空白のみを含む行(タブまたはスペース)を削除します。

awk -v RS='PATTERN FOUND' -F'(\n|^[ \t]*$)+' 'NF{print NF-2}' infile

関連情報