我正在尝试比较两个 fastq 文件(成对读取),打印另一个文件的行号 n

I'm trying to compare two fastq file(paired reads),print line number n of another file

我正在尝试比较两个 fastq 读取(成对读取),以便将 file1.fastq 中模式匹配的位置(考虑行号)与 file2.fastq 进行比较。我想打印 file2.fastq 中相同位置或行号的内容。我正在尝试通过 awk 来做到这一点。前任。如果我的模式匹配位于文件 1 的第 200 行,我想看看文件 2 的第 200 行有什么。对此有任何建议表示赞赏。

一般来说,您需要这种形式:

awk '
    { getline line_2 < "file2" }
    /pattern/ { print FNR, line_2 }
' file1

或者,先将文件粘贴在一起(假设您的 shell 是 bash)

paste -d $'' file1 file2 | awk -F $'' ' ~ /pattern/ {print FNR, }'

我使用 CtrlA 作为字段分隔符,假设字符没有出现在您的文件中。

到目前为止我的新手尝试

zcat file1.fastq.gz|awk '~/pattern/{print NR;}'>matches.csv

awk 'FNR==NR{a[]=[=10=];next;}(FNR in a)' matches.csv file2.fastq.gz

我的理解是你有三个文件。一个模式文件和两个数据文件。您想在数据文件 1 中找到模式的行号,并在数据文件 2 中找到相应的行。如果您能澄清它并可能提供输入文件和预期输出,您将获得更多帮助。

awk 来拯救!

awk -F: -vOFS=: 'NR==FNR{lines[]=[=10=];next} FNR in lines{print lines[FNR],[=10=]}' <(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