合并两个文件中的行并写入第一个文件

时间:2018-10-24 15:55:11

标签: bash awk

我有两个文件file1.txt(较大)和file2.txt(较小),并且仅当新行不重复时,我才想将第二个文件的内容合并到第一个文件中。

我使用了此命令

sudo sh -c "sort -u test_1.txt test_2.txt > test_3.txt ; mv test_3.txt test_1.txt" 

我只是想知道这是否是一种可扩展的方法,特别是如果我有两个以上的文件。

2 个答案:

答案 0 :(得分:1)

如果您的文件file1.txt ... filen.txt已经排序,则可以进行合并排序:

sort -m -u file1.txt ... filen.txt

这肯定是最快的。如果您的文件未排序,则可以不带合并标志就可以做到:

sort -u file1.txt ... filen.txt

如果您不关心任何形式的排序,则可以使用以下行:

awk '!($0 in a){a[$0]; print}' file1.txt ... filen.txt

答案 1 :(得分:0)

如果您不关心保持行顺序,则可以使用sort和uniq。

41590.6753233101 11/12/2013 4:12:28 PM 41593.7843996875 11/15/2013 6:49:32 PM 41593.7844002199 11/15/2013 6:49:32 PM 41593.7844007638 11/15/2013 6:49:32 PM