ヘッダーが次のような行が多いcsvファイルがあります。
DateTime,CallEndTime,KeywordTagTexts,TotalDuration
タイトルキーの位置が変わり、sedを使用して位置を計算しました。
duration=$(sed -n $'1s/,/\\\n/gp' rawfile.csv | grep -nx 'TotalDuration' | cut -d: -f1);
callend=$(sed -n $'1s/,/\\\n/gp' rawfile.csv | grep -nx 'CallEndTime' | cut -d: -f1);
callstart=$(sed -n $'1s/,/\\\n/gp' rawfile.csv | grep -nx 'DateTime' | cut -d: -f1);
DateTimeの値は日付/時刻形式で「2018-12-18 18:36:55」で、TotalDurationの単位は秒です。
CallEndTimeにDateTime + TotalDuration値を追加したいです。
ベストアンサー1
アイデアは最初にepoch時間(1970-01-01 00:00:00 UTC以降の秒数)に変換し、期間を追加して最後に前の表現に戻すことです。
DateTime_epoch_time=$(date +%s -d $DateTime)
CallEndTime_epoch_time=$(("$DateTime_epoch_time" + $TotalDuration))
CallEndTime=$(date '+%Y-%m-%d %H:%M:%S' -d @$CallEndTime_epoch_time)
または1行で:
date '+%Y-%m-%d %H:%M:%S' -d @$(($(date +%s -d "$DateTime") + $TotalDuration))
日付形式の操作の詳細については、次を参照してください。承認する