Linux 打印文件中不以哈希开头的所有行,并按特定列进行筛选
我有一个标签分隔的文件,标题行以Linux 打印文件中不以哈希开头的所有行,并按特定列进行筛选,linux,shell,awk,Linux,Shell,Awk,我有一个标签分隔的文件,标题行以#开头。我想修剪所有标题行以及列#2不以0/0开头的行 第一个逻辑(删除标题行)是正确的,但当我用添加第二个逻辑(我不确定这是否正确)时,没有返回任何内容 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 输出文件 #me
#
开头。我想修剪所有标题行以及列#2
不以0/0
开头的行
第一个逻辑(删除标题行)是正确的,但当我用添加第二个逻辑(我不确定这是否正确)时,
没有返回任何内容
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
输出文件
#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
编辑:因为OP更改了输入文件,所以也根据Ed sir在评论中的建议添加了解决方案
awk '!(/^#/ || $2~/^0\/0/)' Input_file
你能试试下面的吗
awk '!/^#meta/ && $2!="0/0"' Input_file
或
或
设置BEGIN{FS=OFS=“\t”}
,以防您的输入文件被制表符分隔,并且您也需要OFS
输出为\t
制表符