我正在尝试比较两个 fastq 读取(配对读取),以便将 file1.fastq 中模式匹配的位置(考虑行号)与 file2.fastq 进行比较。我想打印 file2.fastq 中相同位置或行号的内容。我正在尝试通过 awk 做到这一点。前任。如果我的模式匹配位于文件 1 的第 200 行,我想看看文件 2 的第 200 行有什么。对此表示赞赏。
问问题
678 次
3 回答
0
我的理解是你有三个文件。一个模式文件和两个数据文件。您想在数据文件 1 中找到模式的行号,并在数据文件 2 中找到相应的行。如果您能够澄清它并可能提供输入文件和预期的输出,您将获得更多帮助。
awk 来救援!
awk -F: -vOFS=: 'NR==FNR{lines[$1]=$0;next} FNR in lines{print lines[FNR],$0}' <(grep -nf pattern data1) data2
将打印行号,从数据文件 1 匹配的模式,以及从数据文件 2 中匹配的相应行。对于我得到的具有准随机数据的组合文件。
1:s1265e:s1265e
2:s28629e:s28629e
3:s6630e:s6630e
4:s24530e:s24530e
5:s23216e:s23216e
6:s25985e:s25985e
于 2015-09-09T21:50:22.047 回答
0
通常,您需要这种形式:
awk '
{ getline line_2 < "file2" }
/pattern/ { print FNR, line_2 }
' file1
或者,首先将文件粘贴在一起(假设您的 shell 是 bash)
paste -d $'\1' file1 file2 | awk -F $'\1' '$1 ~ /pattern/ {print FNR, $2}'
CtrlA假设字符没有出现在您的文件中,我将其用作字段分隔符。
于 2015-09-08T17:34:08.007 回答
0
到目前为止我的新手尝试
zcat file1.fastq.gz|awk '~/pattern/{print NR;}'>matches.csv
awk 'FNR==NR{a[$1]=$0;next;}(FNR in a)' matches.csv file2.fastq.gz
于 2015-09-09T20:28:46.290 回答