GNU/Linux >> Linux の 問題 >  >> Linux

複数の列でN回出現する文字列を持つ行の数を数えますか?

5つのタブ区切り列のそれぞれで構成される数百のテキストファイルがあります。最初の列にはインデックスが含まれ、次の4つには発生回数が含まれます。ここで、0の3列(つまり、以下の例では7行)を含む行の数を数えたいと思います。

1   0   0   0   9
2   0   9   0   0
3   10  0   0   0
4   0   10  4   0
5   0   0   0   10
6   0   0   0   10
7   0   0   0   10
8   0   10  0   0
9   5   0   5   0

これをRのループとしてコーディングできますが、元のファイルにはそれぞれ6000万行以上が含まれているため、awkまたはsedとwc-lを使用した回避策はないのでしょうか。

承認された回答:

GNU sedの使用:

sed -E 's/\t0\>/&/3;t;d' file  | wc -l

アイザックが指摘したように、正確に3を数えたい場合は、これを行います:

sed -n 's/\t0\>//4;t;s//&/3p' file | wc -l

Linux
  1. sedを使用してコマンドラインでテキストを操作する

  2. Sedコマンドで一度に複数のパターンを使用する

  3. 一致した文字列のみをSedで返しますか?

  1. 文字列をSedのスラッシュを含む文字列に置き換える方法は?

  2. ディレクトリ内のファイル数を数える最良の方法は何ですか?

  3. Grep一致後のファイルの行数をカウントする方法は?

  1. Linuxコマンドラインで複数のファイルの文字列を置き換える方法

  2. sed を使用して区切り文字で文字列を分割する

  3. 同じバイトをグループ化して、ファイル内のバイト数をカウントする方法は?