awk 操作文件

use*_*373 3 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
Run Code Online (Sandbox Code Playgroud)

基因的第一行是标题行。我想保持原样,然后我想用 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
Run Code Online (Sandbox Code Playgroud)

因此,我还想在名为“coord”的标题行中放置一个额外的字段,这样当我拆分后续行时,所有内容都已排序。

我知道如何使用 awk 进行拆分,但标题行让我感到困惑

awk -F '*' -v OFS="\t" '{print $1,$2}' ##This is for 2nd line and onwards
Run Code Online (Sandbox Code Playgroud)

jw0*_*013 5

标题行是一种特殊情况,因此您可以将其作为特殊情况处理。

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