一部の行は興味があり、他の行は興味のない巨大なテキストファイルを解析する必要があります。興味のあるものの中で、特定のキーワードの発生回数を計算する必要があります。
ファイルが呼び出され、input.txt
次のように仮定します。
format300,format250,format300
format250,ignore,format160,format300,format300
format250,format250,format300
ignore
行を除いて数を計算したいのですが、format300
どうすればよいですか?
これまで私が得たのは次のコマンドです。このコマンドは各行を一度だけ計算します(十分ではありません)。
cat input.txt | grep -v ignore | grep 'format300' | wc -l
どんな提案がありますか?可能であれば、Perlを使用したくありません。
ベストアンサー1
この行はあなたが望むことができるはずです:
grep -v ignore input.txt | sed 's/format300/format300\n/g' | grep -c "format300"
デフォルトでは、キーワードの各項目をキーワード自体と改行文字に置き換えると、入力ストリームが効果的に与えられた行にキーワードを一度だけ持つことになります。次に、grep -c
キーワードを含む行数を計算します。