だから私はそれぞれ8つの列と多くの行を持つ多数のファイルを持っています。以下は、そのうちの1つの頭の例です。
ID Ct 1 2 3 4 5 6
1 0 consensus - - - - -
2 0 consensus - - - - -
3 0 consensus consensus consensus consensus consensus consensus
4 0 consensus - consensus - - -
5 0 - AT AT GC GC AT
6 0 consensus - - - consensus -
7 0 consensus - - - - -
8 0 consensus consensus consensus - consensus consensus
9 0 consensus - - - - -
最後の6つの列が少なくとも5/6以上を占めるすべての行を分離したいと思います。したがって、ID 3、5、8(4、6、9行)は私の頭からのものです。したがって、2つ未満の列を持つすべての行に "-"を有効にしたいと思います。
私はプログラムが2番目の列でどのくらいの列を占めたかを計算したので、単純なawkスクリプトを使用してこれを行うことができました。これ以上これを行うことができないようです。最良のアプローチは何ですか?
ベストアンサー1
どのくらい行くのでしょうか?
awk 'gsub(/-/, "&") < 2' file
ID Ct 1 2 3 4 5 6
3 0 consensus consensus consensus consensus consensus consensus
5 0 - AT AT GC GC AT
8 0 consensus consensus consensus - consensus consensus
わかりますか? rgは何も言いません。目的の出力 - 単一の出力ファイル、出力行の前にファイル名を付けること、元のファイルと同じ名前の新しいファイル、または何をしたいですか?
編集する(新しいファイル名にコメントを付けた後):
awk 'gsub(/-/, "&") < 2 {print > (FILENAME ".new")}' /path/to/file/*