gpt4 book ai didi

linux - 如何根据多于 1 列的条件删除行

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:09 26 4
gpt4 key购买 nike

我有一个包含 12 列的文件,我想同时删除第 4、5、6、7、8、9、10、11 和 12 列的值为 0 的行。

我写了这段代码,但它不起作用:

cat Combined_PromoterAnalysis.bed |\
awk -F "" '{ if ($4==0,$5==0,$6==0,$7==0,$8==0,$9==0,$10==0,$11==0,$12==0) print $0 }' > Modified.bed

最佳答案

您需要检查一切是否属实。为此,您需要说 condition1 && condition2 ...

这将打印所有这些文件中至少有一个不为 0 的行:

awk -F "" '!($4==0 && $5==0 && $6==0 && $7==0 && $8==0 && $9==0 && $10==0 && $11==0 && $12==0)' file

但是,循环遍历这些字段并在其中一个不为 0 时打印该行可能会更好:

awk '{for (i=4;i<=12;i++) if ($i!=0) {print; next}}' file

值可以是负数吗?因为如果它们都是正数,您可以检查总和是否为 0:

awk -F "" '$4+$5+$6+$7+$8+$9+$10+$11+$12' file

关于linux - 如何根据多于 1 列的条件删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33895577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com