2017-02-27 31 views
0

我有一个包含许多列和行的文件,我想删除第四列和第五列中多于一个字符的行。awk打印列中字符的具体数量

输入:

--- 22:16050115:G:A 16050115 GGG A 
--- 22:16050213:C:T 16050213 C T 
--- 22:16050319:C:T 16050319 C T 
--- 22:16050527:C:A 16050527 C AAA 
--- 22:16050568:C:A 16050568 CC A 
--- 22:16050607:G:A 16050607 G A 
--- 22:16050627:G:T 16050627 G TGG 
--- 22:16050646:G:T 16050646 G T 
--- 22:16050655:G:A 16050655 GTAA A 
... 

所需的输出:

--- 22:16050213:C:T 16050213 C T 
--- 22:16050319:C:T 16050319 C T 
--- 22:16050607:G:A 16050607 G A 
--- 22:16050646:G:T 16050646 G T 
... 

非常感谢你。

回答

4
awk 'length($4)==1 && length($5)==1' inputfile 
--- 22:16050213:C:T 16050213 C T 
--- 22:16050319:C:T 16050319 C T 
--- 22:16050607:G:A 16050607 G A 
--- 22:16050646:G:T 16050646 G T 

这将检查用的awklength()功能的$4$5长度。这是使用比较运算符==。您可以将其修改为<,>,<=等。因此,上述命令将打印第4列和第5列中只有一个字符的行。

+1

谢谢,它运作良好。 –

+2

不错。您也可以避开{print $ 0}部分。 awk'长度($ 4)== 1 &&长度($ 5)== 1'文件。 –

+0

谢谢,实行。 –