次のようにタブ区切りの大きなテキストファイルがあります。
#CHR POS REF ALT EFC GOM
1 100 A G u_v(XXXXXX);i_v(XXXXXXX) 0
2 465 T C d_r(XXXXXX);i_r(XXXXXXXX) 1
9 600 T G d_i(XXXXXX);f_v(XXXXXXXX) -
次の行を削除したい
(1)「EFC」列の内容に「i_r」または「u_v」(「(XXXXXX)」などを含む)が含まれています。
または
(2)「GOM」列の値は1です。
それでは、awkまたはsedを使用して目的のファイルを取得する方法は?
答え1
awkに直接翻訳:
awk -F'\t' '!($5 ~ /i_r/ || $5 ~ /u_v/ || $6 == 1) { print; }' input
- フィールド区切り記号をタブに設定
\t
- 次の条件を満たす場合いいえ本物
!( ... )
- 条件 1: フィールド 5 に、
i_r
またはが含まれます。 - 条件2:フィールド5に、
u_v
またはが含まれます。 - 条件3:フィールド6がある
1
場合 print
ワイヤー
基準に一致する行は印刷されません(「削除」)。
出力例:
#CHR POS REF ALT EFC GOM
9 600 T G d_i(XXXXXX);f_v(XXXXXXXX) -