awkファイルの操作

awkファイルの操作

この形式の大容量ファイルがありますが、ヘッダーを含む最初の数行を表示します。

gene    c1  c2  c3  c4  c5  c6  c7  c8
G1*1    0   0   0   0   0   0   0   0
G2*2    0   0   0   0   1   1   1   1
G3*3    0   0   2   2   44  44  62  62
G4*4    22  0   46  0   1308    7   1773    4

遺伝子の最初の行はヘッダー行です。そのままにして、残りの行をFS = *に分割して、このようなファイルを出力にしたいと思います。

gene    coord   c1  c2  c3  c4  c5  c6  c7  c8
G1  1   0   0   0   0   0   0   0   0
G2  2   0   0   0   0   1   1   1   1
G3  3   0   0   2   2   44  44  62  62
G4  4   22  0   46  0   1308    7   1773    4

したがって、ヘッダー行に「coord」という追加のフィールドを追加して、後続の行を分割するときにすべての項目がソートされるようにしたいと思います。

awkを使用して分割する方法を知っていますが、ヘッダー行が混乱しています。

awk -F '*' -v OFS="\t" '{print $1,$2}' ##This is for 2nd line and onwards

ベストアンサー1

ヘッダー行は特別なケースなので、そうすることができます。

awk -F '*' -v OFS='\t' \
  'NR == 1 { sub(/^gene/, "&" OFS "coord"); print; next }
  { print $1, $2 }'

おすすめ記事