查找特定文本并将其分类为特定列

时间:2014-03-11 10:07:33

标签: awk grep separator

我有一个问题,我想在文本文件中找到文本并将此文本calsiffy到第一列等。我有4列,其中一行只有一行GI或HI等我想如果我找到它,从所有文本“chr”中找到它,我想将它分类到第一列。在此之后我想找到ENST并且如果我找到它我想将它分类到第二列,如果文本不在行中,则第二列将为空。在此之后与GI和HI相同。比输入是4列的文本,但它没有排序,我想排序它谎言。在第一列将是第二列的chr将是ENST,在第三列将是GI并且在第四列将是HI。

INPUT:

> ENST  chr     GI  HI 
> chr   ENST    HI  GI 
> ENST  chr     HI  GI
> chr     .     HI  GI

输出

> chr   ENST  GI   HI
> chr   ENST  GI   HI
> chr   ENST  GI   HI
> chr   .     GI   HI

谢谢。

1 个答案:

答案 0 :(得分:1)

这样的事情:

awk '{
      if(index($0,"chr")) {line="chr"}        else {line=" "}
      if(index($0,"ENST")){line=line " ENST"} else {line=line " ."}
      if(index($0,"GI"))  {line=line " GI"}   else {line=line " ."}
      if(index($0,"HI"))  {line=line " HI"}   else {line=line " ."}
      print line
   }' yourfile

<强>输出:

chr ENST GI HI
chr ENST GI HI
chr ENST GI HI
chr . GI HI