Linux 将两个excel文件合并为具有公共标题的第三个excel文件
我有两个excel文件,在这两个excel文件中都有共同的标题StudentID和StudentName。我想将这两个excel文件合并到第三个excel中,其中包含两个excel中的所有记录以及公共标题。如何通过linux命令执行相同的操作。我假设它是csv文件,因为使用.xlsx文件会更加复杂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
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,考虑模块和模块。