打印文件中所有不以哈希开头的行,并按特定列进行过滤

时间:2018-09-11 14:45:35

标签: linux shell awk

我有一个制表符分隔的文件,其标题行以#开头。我要修剪所有标题行以及列#2并非以0/0开头的行。

我已经正确使用了第一个逻辑(删除标题行),但是当我使用AND添加第二个逻辑(不确定是否是正确的方法)时,什么也没有返回。

awk -F$'\t' '/^[^#]/ && $2 !~ /^0\\/0/ {print;}' test.txt

输入文件

#meta1
#meta2
10  0/2:1/2
10  0/0:5/5
10  2/6:0/0

输出文件

10  0/2:1/2
10  2/6:0/0

1 个答案:

答案 0 :(得分:3)

编辑: 由于OP更改了Input_file,因此也根据Ed ir的建议在注释中添加了解决方案。

awk '!(/^#/ || $2~/^0\/0/)'  Input_file

请您尝试以下。

awk '!/^#meta/ && $2!="0/0"'  Input_file

OR

awk '!/^#/ && $2!="0/0"'  Input_file

OR

awk '!(/^#/ || $2=="0/0")'  Input_file

SET BEGIN{FS=OFS="\t"},如果您的Input_file用TAB分隔并且您也需要将OFS输出作为\t TAB。