2

如果文件的第二列等于以下数字之一:

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

那行得通吗?

4

2 回答 2

4

您可以构建一个dict包含BEGIN块中数字列表的内容。
然后dict用作过滤器。

awk '
BEGIN {
    dict[65]
    dict[81]
    # skip
    dict[177]
}
$2 in dict' file.txt
于 2012-06-18T08:07:09.890 回答
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
于 2012-06-18T09:44:32.363 回答