合并来自不同文件的列

时间:2011-12-06 00:05:46

标签: perl bash sed awk

我有两个具有以下结构的文本文件:

文件1

Column1:Column2
Column1:Column2
...

文件2

Column3
Column3
...

我想创建一个具有以下文件结构的文件:

Column1:Column3
Column1:Column3
...

打开任何建议,但如果解决方案可以从Bash shell或sed / awk / perl / 完成,那将会很好......

3 个答案:

答案 0 :(得分:11)

cut -d: -f1 "File 1" | paste -d: - "File 2"

这会从文件1中删除字段1(用冒号分隔)并将其粘贴到文件2中的唯一列,用冒号分隔输出字段。

答案 1 :(得分:4)

这是一个awk解决方案。它假定file1和file2具有相同的行数。

awk -F : '{ printf "%s:",$1; getline < "file2"; print }' < file1

答案 2 :(得分:2)

由于没有提出纯粹的bash实现,也假设行数相等(仅限bash v4):

mapfile -t file2 < file2

index=0
while IFS=: read -r column1 _; do
        echo "$column1:${file2[index]}"
        ((index++))
done < file1

bash v3:

IFS=$'\n' read -r -d '' file2 < file2

index=0
while IFS=: read -r column1 _; do
        echo "$column1:${file2[index]}"
        ((index++))
done < file1