【发布时间】:2016-08-27 15:01:18
【问题描述】:
我有两个文件;第一个看起来像这样,
SomeFile.CEL SomeOtherFile.CEL
probe1 111 666
probe2 222 777
probe3 333 888
probe4 444 999
probe5 555 100
probe6 101 102
第二个看起来像这样(注意:重复的probe4,有两个不同的基因名称),
probe1 Gene1
probe2 Gene2
probe3 Gene3
probe4 Gene4A
probe4 Gene4B
probe5 Gene5
probe7 Gene6
我需要的是一个看起来像这样的输出文件,
Gene1 111 666
Gene2 222 777
Gene3 333 888
Gene4A 444 999
Gene4B 444 999
Gene5 555 100
这个理想的输出文件将包含在两个文件之间匹配探针名称的所有基因名称。此外,如果单个探针存在多个名称,我希望为所有可能的基因名称复制表达数据 (444 999)(此示例显示单个探针的 2 个基因名称,但它可能多达 5 或 6 个.) 顺便说一下,所有文件都是制表符分隔的。
我已经搜索过这个论坛和其他论坛,虽然这篇文章很接近,
Replace multiple arguments with gsub
awk print column $3 if $2==a specific value?
awk partly string match (if column partly matches)
Sed pattern to match and replace
他们没有回答我的全部问题。
到目前为止,我在这个命令上取得了最大的成功,
awk -F"\t" 'FILENAME=="input1.file"{a[$1]=$1} FILENAME=="input2.file {if(a[$1]){$1="";print $0}}' input1.file input2.file
但它没有考虑必要的重复。最后,有些文件看起来像 input1,但包含的不仅仅是我描述的两个示例(someFile.CEL 和 someOtherFile.CEL)。可能有多达 50 个样本/CEL 文件。我想我可能必须构建一个脚本,但我想我会先问是否有更简单的方法。
【问题讨论】: