我有一个文件,如下所示:

AKT3
ARRB1
ATF2
ATF4
BDNF
BRAF
C00076
C00165
TNF
TNFRSF1A
TP53
TRAF2
TRAF6

对我来说,它是完美分类的。 不是? 另外,我还有另一个文件,其中包含AKT3,BRAF,TRAF6等作为其第一列元素。 由于此文件太大,因此我不在此放置它。 但是,我键入后:

LANG=en_EN join -j 1 file2 file1 > output -t $'\t'

输出文件包含以下几行:

TRAF6   0   genome...
TRAF6   0   genome...
TRAF6   0   genome...
TRAF6   0   genome...

我必须在此输出中看到以AKT3,BRAF等开头的其他行,但只有TRAF6行。 问题是什么? 如何获得适当的输出? 谢谢。

编辑:您可以从此链接获取大文件: https : //www.dropbox.com/s/a2dmsq1tskpb9vg/sorted_mutation_data?dl=0

它约为25 MB。 对此我感到抱歉。

编辑(2):可以说... File1:

ADA
ADAM
BRUCE
GARY

文件2:

AB 1
ABA 2
ABB 3
ADA 4
ADA 5
EVE 6
EVE 7
EVE 8 
GARY 9
GARY 10

输出应为:

ADA 4
ADA 5
GARY 9
GARY 10

编辑:问题是由某种方式隐藏在文本中的不可打印的ASCII字符引起的。 全部删除后,我可以使用“ join”。

===============>>#1 票数:1 已采纳

因此,我不知道您的环境是什么,但这对我来说(我使用显式排序以确保它可以正常工作,并且还揭示了当您按默认的整理顺序对整行进行排序而不是按默认排序顺序时会发生什么情况显式字段)。

还要注意,我在使用join命令的语句上没有-t $'\\t' 如果您的第二个文件具有制表符分隔的字段,则需要使用真实的制表符和文件名前的选项来正确表示,并且还可能必须确保文件使用相同的键和字段进行排序分隔器。

#! /bin/sh

f1=$(mktemp -t jdata)
f2=$(mktemp -t jdata)

trap "RC=$?; rm -f $f1 $f2*; exit $RC" 0 1 2 3 15

sort > $f1 <<__EOF__
ADA
ADAM
BRUCE
GARY
__EOF__

sort > $f2 <<__EOF__
AB 1
ABA 2
ABB 3
ADA 4
ADA 5
EVE 6
EVE 7
EVE 8 
GARY 9
GARY 10
__EOF__

join -j 1 $f1 $f2

sh ./tjoin-multi.sh

ADA 4
ADA 5
GARY 10
GARY 9

  ask by Dorukhan Arslan translate from so

未解决问题?本站智能推荐:

1回复

UNIX Join命令不起作用

我有2个制表符分隔的文件(已排序),我正在尝试内部连接: 文件1: 档案2: 我要加入文件的基础是第二个文件的第二列和第一个文件的第一列。 当我尝试命令时: 我没有输出。 但是当我尝试这个命令时: 我从中得到了一个结果,不幸的是,这意味着UNIX没有找到
1回复

Unix联接不起作用:文件未排序(它们是!!!)

我一直在尝试做一个unix连接,但是它似乎没有用。 我有两个文件,它们都已排序,两个文件的第一列都是数字。 问题似乎在于执行联接的顺序(以及联接如何读取属性)。 错误输出为: 因此,在标签文件的第34行中有109值,在用户文件的第800行中有10值。 因此,它似乎在比较1
1回复

加入声明省略条目

使用:Unix 2.6.18-194.el5 我遇到一个问题,该联接语句从匹配中省略了值/索引。 我发现值在11-90之间(在大约350万个条目中),并且我尝试查找外来字符,但是我可能忽略了某些内容(尝试使用cat -v来查看隐藏的字符)。 这是我正在使用的join语句(为安全起见
1回复

使用特定字段作为键加入

我想在section.dat中找到与“数据库工程”课程相对应的所有部分。 为此,我想使用课程编号作为键将result1.dat与section.dat result1.dat在一起,只保留所需的字段并将中间结果保存到名为result2.dat的文件中。 我已经创建了result1.dat
4回复

在Unix中加入多个文件

我的文件夹中有多个文件,其中包含键和值(以空格分隔)以及仅包含键值的文件。 所有文件均按键排序。 全部具有相同的键。 (也没有丢失的键)。 我想要一个带有键的文件, 后跟所有值 (从同一文件到同一列的值) 密钥文件如下所示: 其余文件如下所示: 我在加入手册页上找不
1回复

当字段在大型文件中为数字时加入UNIX

所以我有两个文件。 File A和File B File A很大(> 60 GB),具有16行(数字和字符串的混合),用“ |”分隔,并且有超过600,000,000行。 此文件中的字段3是ID,它是一个数字字段,长度不同(例如,某人的ID可以为1,而其他人的ID可以为100)
1回复

加入Unix重复行声称未排序

2个csv文件按键排序。 文件1包含2列,列2中为键。文件2包含多个列(这里我仅包含列1和2),而File2:列1的重复次数比文件1在列2中的重复次数多。我想将它们联接无论密钥重复多少次,文件1中的每一行都会在文件2中重复。 Join声称它没有排序-我检查了一下,文件已经排序了,只是一个文件
3回复

如何在unix中加入文件而不进行排序

我正在尝试基于UNIX中的键加入2个csv文件。 我的文件每个确实有5 GB的巨大空间,对它们进行分类花费的时间太长。 我想对50个这样的联接重复此过程。 有人可以告诉我如何加入而无需快速排序。
1回复

Linux / Unix-通过管道将输出加入

我是Linux / Unix领域的新手,有时我会做一些练习。 我一直在做练习,直到分到一部分为止。 普通排序quotes.t5并将输出连接到管道。 在join使用字段分隔符中,从stdin和quotes.comms中读取,输出到quotes.t6 问题是,我不明白这部分在问
3回复

在第二个字段上加入未分类的文件

我只是厌倦了使用join命令而没有获得所需的结果,并返回一些错误。 还有一件事我已经在这里和SuperUser中阅读了与join命令相关的所有查询,但是无法获得成功。 我怎样才能使用join或awk ? 我正在使用此命令但无法获得所需的结果: 它返回这样的东西; 正