以下のデータを含むテキストファイルがあります(正確には1875行目)。
chr1 MOTEVOC_cage_181208 TF_binding_site_cage_181208 6585538 6585547 0.905022147 - . TF_binding_site_cage_181208 MEF2A,B,C,D-148428 ;ALIAS MEF2A,MEF2B,MEF2C,MEF2D ;L3_ID L3_chr1_-_6585517
chr1 MOTEVOC_cage_181208 TF_binding_site_cage_181208 6767855 6767864 0.703029237 + . TF_binding_site_cage_181208 MEF2A,B,C,D-148303 ;ALIAS MEF2A,MEF2B,MEF2C,MEF2D ;L3_ID L3_chr1_+_6768100
chr1 MOTEVOC_cage_181208 TF_binding_site_cage_181208 8686283 8686292 0.481284243 + . TF_binding_site_cage_181208 MEF2A,B,C,D-148085 ;ALIAS MEF2A,MEF2B,MEF2C,MEF2D ;L3_ID L3_chr1_-_8685906
chr1 MOTEVOC_cage_181208 TF_binding_site_cage_181208 10660924 10660933 0.818294903 + . TF_binding_site_cage_181208 MEF2A,B,C,D-148400 ;ALIAS MEF2A,MEF2B,MEF2C,MEF2D ;L3_ID L3_chr1_+_10661128
chr1 MOTEVOC_cage_181208 TF_binding_site_cage_181208 12327417 12327426 0.584010382 - . TF_binding_site_cage_181208 MEF2A,B,C,D-148387 ;ALIAS MEF2A,MEF2B,MEF2C,MEF2D ;L3_ID L3_chr1_+_12327504
chr1 MOTEVOC_cage_181208 TF_binding_site_cage_181208 12327433 12327442 0.825226087 - . TF_binding_site_cage_181208 MEF2A,B,C,D-148388 ;ALIAS MEF2A,MEF2B,MEF2C,MEF2D ;L3_ID L3_chr1_+_12327504
最後に「+」の行を抽出するソリューションを探しています。 (最後の後に発生します。もう一度ストランドを抽出して別のファイルに入れ;
たいです。-
編集:データセットが変更されました。以前は間違ったファイルを見ました。
答え1
コメントを介して+
7番目の列または-
。入力ファイルはタブで区切られます。おそらくこれのための最も自然なツールは、次の名前+
のファイルに行を保存し、plus
次のファイルに減算行を保存することです。minus
awk
awk -F'\t' '$7=="+"{print >"plus"} $7=="-"{print>"minus"}' file
仕組み:
-F'\t'
awk
一度に1つのレコード(行)を読み取り、フィールドに分割します。ここでは、フィールド区切り文字をタブに設定しました。$7=="+"{print >"plus"}
7番目のフィールドがある場合は、
+
その行をファイルに保存しますplus
。$7=="-"{print>"minus"}
同様に、7番目のフィールドがある場合は、
-
その行をファイルに保存しますminus
。
答え2
sed -ne '/^[^+-]*+/w plus.file' -e //d -e '/^[^+-]-/w minus.file' <infile
7番目のタブで区切られたセクションに対して、次の操作を行います。
sed -ne 'h;s/\([^\t]*\t\)\{6\}[^\t+-]*//
/^-/{g;w minus.file' -e 'b
}; /^+/{g;w plus.file' -e \}
ただし、上記のエスケープ文字の<tab>
代わりにリテラル文字を使用する必要があります。\t