大きなテキストファイルから行を抽出する

大きなテキストファイルから行を抽出する

次のようなデータを含むテキストファイルがあります(正確には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

関連情報