パターン間の行数を計算し、ファイル内の行数をリダイレクトする方法は?
例:
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