Сделать сумму с двумя файлами, но один раз в строке - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть два файла.В одном файле у меня есть случайная дата на строку, а в другом файле у меня есть число на строку, это означает:

Файл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

Итак, как мне суммировать только строку1 со строкой1, строку2 со строкой2 и т. Д.

Спасибо!

1 Ответ

0 голосов
/ 06 февраля 2019

Можно использовать что-то подобное, при условии, что ваша дата указана в 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

Надеюсь, что это может помочь

...