Linux 将两个excel文件合并为具有公共标题的第三个excel文件

Linux 将两个excel文件合并为具有公共标题的第三个excel文件,linux,bash,Linux,Bash,我有两个excel文件,在这两个excel文件中都有共同的标题StudentID和StudentName。我想将这两个excel文件合并到第三个excel中,其中包含两个excel中的所有记录以及公共标题。如何通过linux命令执行相同的操作。我假设它是csv文件,因为使用.xlsx文件会更加复杂 cp first_file.csv third_file.csv tail -n +2 second_file.csv >> third_file.csv 第一行将第一个文件复制到名为t

我有两个excel文件,在这两个excel文件中都有共同的标题StudentID和StudentName。我想将这两个excel文件合并到第三个excel中,其中包含两个excel中的所有记录以及公共标题。如何通过linux命令执行相同的操作。

我假设它是csv文件,因为使用.xlsx文件会更加复杂

cp first_file.csv third_file.csv
tail -n +2 second_file.csv >> third_file.csv

第一行将第一个文件复制到名为third_file.csv的新文件中。第二行用第二行转义标题开始的第二个文件的内容填充新文件。

由于您需要使用Linux命令执行此操作,我假定您有两个CSV文件而不是XLSX文件

如果是这样,那么LinuxJoin命令非常适合解决这样的问题

假设您的两个文件是:

file1.csv 学生ID、学生姓名、城市 约翰·史密斯,伦敦 纽卡斯尔阿瑟·登特2号 索菲·史密斯,伦敦 以及:

文件2.csv 学生ID、学生姓名、科目 约翰·史密斯,数学 阿瑟·登特,哲学 苏菲·史密斯,英语 我们想在Student ID字段上进行平等联接,或者我们可以使用Student Name,这并不重要,因为两者都是公共的

我们可以使用以下命令执行此操作:

$join-11-21-t,-o 1.1,1.2,1.3,2.3文件1.csv文件2.csv 学生ID、学生姓名、城市、科目 约翰·史密斯,伦敦,数学 2,亚瑟·登特,纽卡斯尔,哲学 索菲·史密斯,伦敦,英语 作为说明,此以SQL编写的join命令类似于:

SELECT `Student ID`, `Student Name`, `City`, `Subjects`
FROM `file1.csv`, `file2.csv`
WHERE `file1.Student ID` = `file2.Student ID`
加入的选项意味着:

SELECT子句:

-o 1.1,1.2,1.3,2.3表示选择第一个文件的第一个字段、第一个文件的第二个字段、第一个文件的第三个字段、第二个文件的第三个字段。 FROM条款:

file1.csv file2.csv,即传递给join的两个文件名参数。 WHERE条款:

-1 1表示从左表的第一个字段进行连接 -2 1表示从右表连接到第一个字段-1=左-2=对 此外:

-t、 告诉join使用逗号作为字段分隔符
@谢谢你的回答。 通过下面类似的方式,我们能够实现同样的目标。 假设有两个文件a.xls和b.xls,希望将它们合并到第三个文件c.xls中

cat a.xls > c.xls && tail -n +2 b.xls >> c.xls

总是建议在你的文章中输入输入和输出,请这样做。如果你做Perl,考虑模块和模块。