【发布时间】:2016-01-02 16:27:49
【问题描述】:
我正在尝试使用 awk 将 file1 与 file2 匹配,并在单独的文件中打印匹配的行。 File1 约为 4MB,我收到以下错误,我似乎无法修复它。谢谢你:)。
awk 'NR==FNR{c[$0]; next} ($0 in c)' RS="," file1.txt RS="\n" file2.txt > match.txt
awk:超出程序限制:最大字段数 size=32767 FILENAME="sort.2.txt" FNR=1 NR=1
文件1
chr1:3063265-3063458 AVP:exon.3 8.55959
chr1:947806-947967 RSPO4:exon.3 246.54
chr2:12758246-12758422 CTD-2192J16.22:exon.2;MAN2B1:exon.1;MAN2B1:exon.20;MAN2B1:exon.22 221.483
chr2:57975642-57975745 KIF5A:exon.1;KIF5A:exon.23;KIF5A:exon.26 222.932
文件2
AVP
KIF5A
期望的输出
chr1:3063265-3063458 AVP:exon.3 8.55959
chr2:57975642-57975745 KIF5A:exon.1;KIF5A:exon.23;KIF5A:exon.26 222.932
【问题讨论】:
-
为 sort.2.txt 设置
RS=","看起来有点可疑。这真的是你想做的吗?在 awk 找到逗号之前,所有内容都将被视为一个字段,并且我在您的示例文件中看不到任何逗号。 (如果您将示例文件命名为与命令中相同的名称,也会有所帮助。) -
我已重命名文件名以匹配。我道歉,因为我认为我这样做了。我将从 file1 中删除
RS=",",因为我试图在单独的文件中输出与 file2 匹配的每一行(匹配)。谢谢你:)。 -
可以更简单,试试
grep -Ff file2 file1。
标签: awk