从awk具有阈值的文件中选择列,但是否打印用户定义的列?
我想从下面的文件中选择阈值小于第6列的前4列从awk具有阈值的文件中选择列,但是否打印用户定义的列?,awk,grep,Awk,Grep,我想从下面的文件中选择阈值小于第6列的前4列 chr start end copy number status WilcoxonRankSumTestPvalue KolmogorovSmirnovPvalue 1 761750 7202499 3 gain 5.13822497072701e-298 0 1 7289250 7289999 7 gain 0.014309298726355 0.0366367750948455 2 986117
chr start end copy number status WilcoxonRankSumTestPvalue KolmogorovSmirnovPvalue
1 761750 7202499 3 gain 5.13822497072701e-298 0
1 7289250 7289999 7 gain 0.014309298726355 0.0366367750948455
2 98611750 98612249 6 gain 0.0332886037857768 0.270077169105485
2 113816500 114398999 3 gain 3.96934332204917e-17 5.55111512312578e-15
2 121103500 122122749 3 gain 1.00740734942511e-17 4.25659507641285e-13
2 128322500 128471749 3 gain 7.89316303630306e-28 0
2 218620500 219303499 3 gain 0.00830885602834e-56 0
2 220084750 220085249 6 gain 0.0232886037857768 0.270077169105485
2 220085250 220506749 3 gain 5.22993652708892e-114 0
该文件包含7列。我想选择不带标题的前4列,但只选择第6列中的值小于等于0.05的列
我已经计算出了我需要的列,也去掉了标题,但是我如何在第6列使用阈值,而不是在打印中使用它。我只打印$1、$2、$3、$4
,其中$6
列值小于等于0.05
有没有可能用一个带有管道的
awk
命令来执行此操作?我将其转换为:
awk 'NR>1 && $6<0.05 {NF=4; print}' file
如果第2行的第6个值低于0.05
,则从第2行获取所有行。如果是,则通过将NF
(字段数)设置为4
来删除额外的列。然后,它打印该行
注意,您可以像这样将其预处理到列-t
(感谢Glenn的评论!)
$awk'NR>1&&$6选择$6的前四列这对我也适用。我已经下达了命令<代码>awk-v OFS='\t'{如果($6)知道输出应该是什么样子有点复杂。你能交叉检查一下列和行的意思吗?提供你想要的输出就可以了。输出应该是前4列,其第6列的值小于0.05。试试我的命令它可以工作。@fedorqui,他只想要NF=4
和$6正是这样@fedorqui应该修改的命令awk'NR>1&&$6是的,即使这个命令工作得很好,除了我还引入了制表符delimeters,因为我需要将它保存在不同的文件格式中。如果您看到我使用的命令,那么您将看到输出。
1 761750 7202499 3
1 7289250 7289999 7
2 98611750 98612249 6
2 113816500 114398999 3
2 121103500 122122749 3
2 128322500 128471749 3
2 218620500 219303499 3
2 220084750 220085249 6
2 220085250 220506749 3
$ awk 'NR>1 && $6<0.05 {NF=4; print}' file | column -t
1 761750 7202499 3
1 7289250 7289999 7
2 98611750 98612249 6
2 113816500 114398999 3
2 121103500 122122749 3
2 128322500 128471749 3
2 218620500 219303499 3
2 220084750 220085249 6
2 220085250 220506749 3
awk '{if($6<=0.05){print $1,$2,$3,$4}}' file
1 761750 7202499 3
1 7289250 7289999 7
2 98611750 98612249 6
2 113816500 114398999 3
2 121103500 122122749 3
2 128322500 128471749 3
2 218620500 219303499 3
2 220084750 220085249 6
2 220085250 220506749 3