这是我想要加入这两个文件的两个文件(其中一个是.txt,另一个是.tsv)
文件 1(.txt 文件):有两列
string_1 abc...
string_2 bcd...
string_3 cde...
文件 2(.tsv 文件):有两列
string_1 X...
string_2 Y...
string_3 Z...
我使用这个 linux 语句从命令行加入文件:
join -j 2 -o 1.1, 1.2, 1.3, 2.1 file.txt file.tsv
但是我在执行时收到此错误消息:
join: invalid file number in field spec: ‘’
最佳答案
看起来这里有几个问题。
首先,您要求 join 使用字段 2 (-j 2
) 加入文件,但从您的输入数据看来,您实际上想加入字段 1。如果我获取您的示例输入并运行:
join -j 2 file1.txt file2.txt
我不会得到任何输出,因为没有可连接的行。将其与运行的输出进行比较:
join file1.txt file2.txt
结果是:
string_1 abc... X...
string_2 bcd... Y...
string_3 cde... Z...
接下来,您对 -o
的参数看起来是错误的。 -o
选项需要一个没有空格的单个参数,如下所示:
-o 1.1,1.2,1.3,2,1
如果我们使用它,我们会得到:
$ join -o '1.1,1.2,1.3,2.1' file1.txt file2.txt
string_1 abc... string_1
string_2 bcd... string_2
string_3 cde... string_3
但是这个论点仍然看起来是错误的,因为你的输入文件只
有两列,并且您试图引用第三列
第一个文件(1.3
)。由于字段 1 是
两个输入,将 2.1
列包含在
输出(因为它将与 1.1
相同)。这让我们:
$ join -o '1.1,1.2,2.2' file1.txt file2.txt
string_1 abc... X...
string_2 bcd... Y...
string_3 cde... Z...
这正是我们通过简单运行 join file1.txt 得到的结果
file2.txt
不带参数。
关于linux - 为什么我无法在 Ubuntu 上加入这两个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53669831/