我有两个文件,比如像:如何巧妙地将两个文件与唯一键合并?
文件1:
A,Content1
B,Content2
C,Content3
文件2:
D,Content4
E,Content5
B,Content6
有一个在文件1和文件2相同的密钥,我可以巧妙的是,合并两个文件结果文件如下:
A,Content1
B,Content2
C,Content3
D,Content4
F,Content5
我有两个文件,比如像:如何巧妙地将两个文件与唯一键合并?
文件1:
A,Content1
B,Content2
C,Content3
文件2:
D,Content4
E,Content5
B,Content6
有一个在文件1和文件2相同的密钥,我可以巧妙的是,合并两个文件结果文件如下:
A,Content1
B,Content2
C,Content3
D,Content4
F,Content5
如果您的文件不是太多bi克(这是我会从你的shell的用法假设):
#!/bin/bash
keys=$(cat "[email protected]" | cut -d',' -f1 | sort -u)
for key in $keys
do
grep -h $key "[email protected]" | head -1
done
基本上是:
提取密钥(的东西,是第一个逗号之前)
发现该文件中第一次出现该密钥(即头-1)
您应该能够与单一sort
实现这一点:
sort -t',' -k1,1 -u file1 file2
它设置字段分隔符逗号,排序和上进行重复数据删除仅第一个字段。
请注意,订单很重要。如果OP希望'file2'中的列获胜,则该命令应该交换到'-u file2 file1' – bishop
只需几点提示,当''空格出现时,使用''$'''覆盖'$ *'来保留分组。另外,'$(echo $ keys)'可以用'$ keys'替换。 –