私はデータセットを持っており、特別な条件でフィルタを適用したいと思います。私はawkソリューションを好むだろうが、他のbashソリューションも受け入れられる。ファイルはタブで区切られ、出力もタブで区切られます。awkを使用したデータのフィルタリング
FILE1:
20 HIGH 15 down -
90 LOW 20 up -
100 LOW 25 syn benign
50 LOW 40 syn -
10 HIGH 10 down -
10 LOW 50 down -
5 PATHOGENIC 45 no -
100 HIGH 40 no -
20 LOW 30 int benign
5 LOW 25 int -
私は条件によってデータをフィルタする必要があります。
1. Allays keep row where $2 == HIGH and PATHOGENIC
2. Remove $1 > 20
3. Remove $3 <= 20
4. Remove $4 == down
5. Remove $4 == up
6. Remove $4 == int && $5 == benign
だから出力:
20 HIGH 15 down -
10 HIGH 10 down -
5 PATHOGENIC 45 no -
100 HIGH 40 no -
5 LOW 25 int -
私の試みでした:
awk -v OFS="\t" '{if($1 >= 20 && $3 <= 20); print $1,$2,$3,$4,$5}' | awk -v OFS="\t" '{if($4 != down); print $1,$2,$3,$4,$5}' | awk -v OFS="\t" '{if($4 != up); print $1,$2,$3,$4,$5}' > output
1.condition
と6.condition
を実装できません。また、私はこのフィルタリングがピッティングなしで実行できると信じています。
ありがとうございました。
です。条件が矛盾します。有効な出力を表示 – RomanPerekhrest
正しいです。条件が$ 4 == int && $ 5 ==良性の場合にのみ適用されるため、最後の行が表示されます。 – Geroge
出力が正しい - 高と病原性を維持し、最後の行が条件$ 4 == int && $ 5 == benign 。 – Geroge