我使用 awk 从两个不同的文件中提取和计算信息,并且我想将结果合并到列中的单个文件中(例如,第 1 列和第 2 列中的第一个文件的输出以及第 3 和第 4 列中的第二个文件的输出)。
输入文件包含:
文件 1
SRR513804.1218581HWI-ST695_116193610:4:1307:17513:49120 SRR513804.16872HWI ST695_116193610:4:1101:7150:72196 SRR513804.2106179HWI-
ST695_116193610:4:2206:10596:165949 SRR513804.1710546HWI-ST695_116193610:4:2107:13906:128004 SRR513804.544253
文件2
>SRR513804.1218581HWI-ST695_116193610:4:1307:17513:49120
TTTTGTTTTTTCTATATTTGAAAAAGAAATATGAAAACTTCATTTATATTTTCCACAAAG
AATGATTCAGCATCCTTCAAAGAAATTCAATATGTATAAAACGGTAATTCTAAATTTTAT
ACATATTGAATTTCTTTGAAGGATGCTGAATCATTCTTTGTGGAAAATATAAATGAAGTT
TTCATATTTCTTTTTCAAAT
要解析第一个文件,我这样做:
awk '
{
s = NF
center = $1
}
{
printf "%s\t %d\n", center, s
}
' file1
要解析第二个文件,我这样做:
awk '
/^>/ {
if (count != "")
printf "%s\t %d\n", seq_id, count
count = 0
seq_id = $0
next
}
NF {
long = length($0)
count = count+long
}
END{
if (count != "")
printf "%s\t %d\n", seq_id, count
}
' file2
我的临时解决方案是在第二步中创建一个临时并覆盖。有一种更“优雅”的方式来获得这个输出?