使用日期字段混合来自两个csv文件的数据

时间:2017-01-19 13:35:25

标签: bash csv

我有两个csv文件。

File1.csv

F1    F2
14:01 22
14:05 23
14:07 34
14:58 98
15:01 22
15:10 24

File2.csv

F1    F2
14:01 22
14:06 21
14:07 34
14:59 08
15:01 22
15:19 20

是否有可能有类似下面的内容?

F1    F2   F3 
14:01 22   22
14:05 23
14:06      21
14:07 34   34
14:58 98
14:59      08
15:01 22   22
15:10 24
15:19      20 

谢谢。

1 个答案:

答案 0 :(得分:2)

这是一个纯粹的bash解决方案,不是@Inian指出的效率最高但仍然

#!/bin/bash

f1=()
f2=()

while read -r f1l; do
    f1[${#f1[@]}]="$f1l"
done < File1.csv
while read -r f2l; do
    f2[${#f2[@]}]="$f2l"
done < File2.csv

output=$'F1\tF2\n'
for (( i=1; i<${#f1[@]}; ++i ))
do
    f1c1=${f1[i]%% *}
    f1c2=${f1[i]##* }
    f2c1=${f2[i]%% *}
    f2c2=${f2[i]##* }

    if [[ $f1c1 = $f2c1 ]]; then
        output+="$f1c1"$'\t'$(($f1c2+$f2c2))$'\n'
    else
        output+="$f1c1"$'\t'"$f1c2"$'\n'
        output+="$f2c1"$'\t'"$f2c2"$'\n'
    fi
done

echo "${output:0:-1}" > File3.csv