用两个文件求和,但每行一次

时间:2019-02-05 12:48:25

标签: ksh

我有两个文件。在一个文件中,我每行有一个随机日期,在另一个文件中,我每行有一个数字,这意味着:

文件1:

2018/06/24 14:17:19
2018/06/15 17:24:50
2018/07/15 10:25:29

文件2:

5938
1234
4567

因此,我想读取两个文件并将数字(以秒为单位)添加到日期,每行一次。

我的代码:

#!/bin/sh
IFS=$'\n'


for i in `cat fechas_prueba.txt`
do
        for j in `cat duraciones.txt` 
        do
                echo "$i - $j"
                newDate=$(date -d "$i $j seconds" "+%Y/%m/%d %H:%M:%S")
                echo $newDate >> sum_dates.txt
        done
done

我希望file1的第一行与file2的第一行相加,第二行与第二行的总和...这意味着:

2018/06/24 15:56:17
2018/06/15 17:45:24
2018/07/15 11:41:36

但是,我得到以下信息:

2018/06/24 15:56:17
2018/06/24 14:37:53
2018/06/24 15:33:26
2018/06/15 19:03:48
2018/06/15 17:45:24
2018/06/15 18:40:57
2018/07/15 12:04:27
2018/07/15 10:46:03
2018/07/15 11:41:36

所以,我如何只将line1与line1相加,将line2与line2相加,等等。

谢谢!

1 个答案:

答案 0 :(得分:0)

可以使用类似的方法,假设您的日期在date.txt中,添加到这些日期的第二个在second.txt中,并且您希望最终结果在finaldate.txt中。

#!/bin/ksh

# Opening finaldate.txt for writing on file descriptor 3
exec 3>./finaldate.txt

# Read simultaneously the OriginalDate from file descriptor 4 and
# SecondToAdd from file descriptor 5
while read -u 4 OriginalDate && read -u 5 SecondToAdd; do
        FinalDateInSecond=$(($(date -d "$OriginalDate" +"%s")+$SecondToAdd))
        FinalDate=$(date -d @"$FinalDateInSecond" +"%Y/%m/%d %H:%M:%S")
        # Printing the result on file descriptor 3
        print -u 3 $FinalDate
# Having date.txt being read on file descriptor 4 while second.txt being
# read on file descriptor 5
done 4<date.txt 5<second.txt

希望它能提供帮助