各文字列間の不規則な項目数に基づいて、特定の文字列に基づいて1つの列を複数の列に分割します。

各文字列間の不規則な項目数に基づいて、特定の文字列に基づいて1つの列を複数の列に分割します。

独自の列を含むファイルがあり、この列を特定の文字列(chr)に基づいて複数の列に分割したいと思います。最初の文字列と2番目の文字列、2番目の文字列と3番目の文字列、n番目の文字列とm番目の文字列の間の項目の数は不規則です。

入力は次のとおりです。

chr10:127293562-127293909
BRUNOL4(Hs/Mm)
CPEB4(Hs/Mm)
CUG-BP(Hs/Mm)
DAZAP1(Hs/Mm)
ENOX1(Hs/Mm)
FMR1(Hs/Mm)
chr11:49214073-49214804
BRUNOL4(Hs/Mm)
BRUNOL5(Hs/Mm)
CPEB2(Hs/Mm)
CPEB4(Hs/Mm)
CUG-BP(Hs/Mm)
HNRNPC(Hs/Mm)
HNRNPCL1(Hs/Mm)
HNRNPH1(Hs/Mm)
HuR(Hs/Mm)
MBNL1(Hs/Mm)
NOVA1(Hs/Mm)
chr11:49854587-49855127
A1CF(Hs/Mm)
BRUNOL4(Hs/Mm)

出力は次のようになります。

chr10:127293562-127293909  chr11:49214073-49214804  chr11:498547-498551
BRUNOL4(Hs/Mm)             BRUNOL4(Hs/Mm)           A1CF(Hs/Mm)
CPEB4(Hs/Mm)               BRUNOL5(Hs/Mm)           BRUNOL4(Hs/Mm)
CUG-BP(Hs/Mm)              CPEB2(Hs/Mm)
DAZAP1(Hs/Mm)              CPEB4(Hs/Mm)    
ENOX1(Hs/Mm)               CUG-BP(Hs/Mm)
FMR1(Hs/Mm)                HNRNPC(Hs/Mm)
                           HNRNPCL1(Hs/Mm)
                           HNRNPH1(Hs/Mm)
                           HuR(Hs/Mm)
                           MBNL1(Hs/Mm)
                           NOVA1(Hs/Mm)

ベストアンサー1

$ csplit -zsf file -n 1 ip.txt /^chr/ {*} ; paste file* | column -nt
chr10:127293562-127293909  chr11:49214073-49214804  chr11:49854587-49855127
BRUNOL4(Hs/Mm)             BRUNOL4(Hs/Mm)           A1CF(Hs/Mm)
CPEB4(Hs/Mm)               BRUNOL5(Hs/Mm)           BRUNOL4(Hs/Mm)
CUG-BP(Hs/Mm)              CPEB2(Hs/Mm)             
DAZAP1(Hs/Mm)              CPEB4(Hs/Mm)             
ENOX1(Hs/Mm)               CUG-BP(Hs/Mm)            
FMR1(Hs/Mm)                HNRNPC(Hs/Mm)            
                           HNRNPCL1(Hs/Mm)          
                           HNRNPH1(Hs/Mm)           
                           HuR(Hs/Mm)               
                           MBNL1(Hs/Mm)             
                           NOVA1(Hs/Mm)             
  • csplitパターンに従ってファイルを分割するために使用されます。
    • -z空のファイルを削除するオプション(パターンが最初の行自体と一致する場合)
    • -sログ出力の抑制
    • -f file -n 1出力ファイル名はfile1桁のサフィックスで始まります。
    • ip.txt入力ファイルで、/^chr/処理するパターンです。
    • {*}できるだけ分けて
  • pasteその後、列接続にファイルを分割するために使用されました。
  • column -nt貼り付け出力のスタイルを指定するために使用され、隣接する区切り記号のマージとGNU拡張のデフォルトの-n動作を防ぎます。column

おすすめ記事