根据第一列匹配和合并行

时间:2015-09-08 15:47:37

标签: shell unix

我有2个文件:

File1中

123:dataset1:dataset932  
534940023023:dataset:dataset039302  
49930:dataset9203:dataset2003

文件2

49930:399402:3949304:293000232:30203993  
123:49030:1204:9300:293920  
534940023023:49993029:3949203:49293904:29399

我想创建

期望的结果:

49930:399402:3949304:293000232:30203993:dataset9203:dataset2003  
534940023023:49993029:3949203:49293904:29399:dataset:dataset039302
etc

其中结果包含每对输入行的一行,这些输入行具有相同的第一列(:作为列分隔符)。

2 个答案:

答案 0 :(得分:0)

join命令是你的朋友。您可能需要对输入进行排序(对文件进行预排序,或者使用流程替换(如果可用) - 例如使用bash)。

类似的东西:

join -t ':' <(sort file2) <(sort file1) >file3

答案 1 :(得分:0)

如果您不想对文件进行排序,请使用grep:

while IFS=: read key others; do
        echo "${key}:${others}:$(grep "^${key}:" file1 | cut -d: -f2-)"
done < file2