如果文件的第二列等于以下数字之一:
65,81,83,97,99,113,129,145,147,161,163,177 #To be read 65 OR 81 OR 83 OR 97 OR 99 etc..
然后我需要在输出文件中打印整行,因此输入以下内容:
samtools view myfile.bam | awk '{for (i=65,81,83,97,99,113,129,145,147,161,163,177) if ($2==i) ; print$0} > output.bam
那会有用吗?
答案 0 :(得分:4)
您可以构建dict
,其中包含BEGIN
块中的数字列表
然后使用dict
作为过滤器。
awk '
BEGIN {
dict[65]
dict[81]
# skip
dict[177]
}
$2 in dict' file.txt
答案 1 :(得分:1)
如果您有一个很长的列表,而不是有很多明确的分配:
awk 'BEGIN {
numlist = "65,81,83,97,99,113,129,145,147,161,163,177"
split(numlist, a, ",")
for (i in numlist) {
nums[a[i]]
}
}
$2 in nums' inputfile