特定の列の内容の分割

特定の列の内容の分割

2番目の列の内容を2つの列に分割する必要がありますfile。たとえば、次のようになります。

Id  allele  id2
30  TC  12      
211 GG  12      
327 AA  13      
688 TC  15      
760 TT  18      
868 CC  90 

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

Id  allele1 allele2 id2
30  T   C   12      
211 G   G   12      
327 A   A   13      
688 T   C   15      
760 T   T   18      
868 C   C   90      

ベストアンサー1

そしてawk

awk 'NR==1{$2=$2"1 "$2"2"} NR!=1{split($2,a,""); $2=a[1]" "a[2];}1' file
  • NR==1最初の行にのみ適用
    • $2=...:2番目のフィールドをタイトルに再フォーマットします。allele1 allele2
  • NR!=1他のすべての行に適用されます。
    • split($2,a,"")$2配列の2番目のフィールドの分割a
    • $2=a[1]" "a[2];:2つの分割値を使用しa[1]、2番目のフィールドの形式を再指定しますa[2]
  • 1最後の条件がtrueで、awk行全体(アクション)が印刷されます。

列にリストするには、これを使用しますawk ... | column -t。出力は次のとおりです。

Id   allele1  allele2  id2
30   T        C        12
211  G        G        12
327  A        A        13
688  T        C        15
760  T        T        18
868  C        C        90

おすすめ記事