我有一个包含数字列表的文件。我有第二个文件,每个文件包含各种条目和多个字段。
我想要做的是获取第 12 个字段等于第一个数字的所有行,并将它们放入一个新文件中,然后放入第二个数字,依此类推。
我写了一句很有道理的俏皮话,但我不明白为什么它行不通。
这是数字列表:
cat truncations_list.txt
3
318
407
412
7
包含要排序的条目的文件是:
M00970:45:000000000-A42FD:1:1101:14736:1399 TGCCCAGTGCTCTGAATGTNNNNNTGAAGAAATTCAAGTAAGCGCGGGTCATCGGCNGGAGTAACTATGACTCTNTTAAGGAGGACCAATATGAACCANACNNNNNNNNNACTNTATCTAGGGTTCCCTGCACAGTATGTGNCC 79 TGCCCAGTGCTCTGAATGTNNNNNTGAAGAAATTCAAGTAAGCGCGGGTCATCGGCNGGAGTAACTATGACTCTNTTAA 65 GGAGGACCAATATGAACCANACNNNNNNNNNACTNTATCTAGGGTTCCCTGCACAGTATGTGNCC 79S65M 1 81 TGCCCAGTGCTCTGAATGTNNNNNTGAAGAAATTCAAGTAAGCGCGGGTCATCGGCNGGAGTAACTATGACTCTNTTAAGG -2 318
M00970:45:000000000-A42FD:1:1101:15371:1399 TGCCCAGTGCTCTGAATGTNNNNNTGAAGAAATTCAAGTAAGCGCGGGTCAACGGCNGGAGTAACTATGACTCTNTTAAGGAGTCGGTGTTCACATGCNATNNNNNNNNNCAGNCGAACTTGATGAAGAACGTCGACGTGTNGG 83 TGCCCAGTGCTCTGAATGTNNNNNTGAAGAAATTCAAGTAAGCGCGGGTCAACGGCNGGAGTAACTATGACTCTNTTAAGGAG 61 TCGGTGTTCACATGCNATNNNNNNNNNCAGNCGAACTTGATGAAGAACGTCGACGTGTNGG 83S61M 1 81 TGCCCAGTGCTCTGAATGTNNNNNTGAAGAAATTCAAGTAAGCGCGGGTCAACGGCNGGAGTAACTATGACTCTNTTAAGG 2 407
这是我的命令:
file="truncations_list.txt"
while read line; do awk '$12==$line' R2_Output.txt >reads_$line.txt ; done <"$file"
该命令将创建所有文件“reads_412.txt”等,但所有文件都是空的。
我感谢您的帮助!
您的主要问题是 awk 程序使用单引号,因此“$line”变量永远不会扩展。快速解决方法是
awk -v num=$line '$12==num' R2_Output.txt
但是,不要这样做。您将为数字文件中的每一行读取一次输出文件。您可以通过仅读取每个文件一次来使其工作:
awk '
# read the list of numbers in truncations_list
FNR == NR {
num[$1]
next
}
# process each line of the output file
# any lines with an "unknown" $12 will be ignored
$12 in num {
f = "reads_" $12 ".txt"
print >> f
}
' truncations_list.txt R2_Output.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)