
아래는 파일 형식입니다. 날짜 형식의 처음 두 열을 에포크 형식으로 변환하는 데 도움을 줄 수 있는 사람이 있나요?
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702058496,0,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702058496,2,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702058496,3,332,0,0,0,332,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702058496,4,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702062592,0,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702062592,2,0,0,0,0,919,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702062592,3,919,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702062592,4,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702066688,0,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702066688,2,0,0,0,0,0,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702066688,3,0,0,0,0,919,0,0
2018-01-02 05:44:00,2018-01-02 05:59:00,1,702066688,4,0,0,0,0,0,0,0
2018-01-02 10:44:00,2018-01-02 10:59:00,1,702058496,0,0,0,0,0,0,0,0
2018-01-02 10:44:00,2018-01-02 10:59:00,1,702058496,2,0,0,0,0,0,0,0
나는 다음 명령으로 시도했습니다.
아= cat ATMIF.180102-0615 |grep -|awk -F ',' '{print $1}'
; for i in cat ATMIF.180102-0615 |grep -|awk -F ',' '{print $1}'
;do date -d "$aa" "+%s"; 완료
하지만 다음과 같은 오류가 발생합니다. 날짜: 잘못된 날짜 2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00' date: invalid date
2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05 :44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018 -01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 10: 44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018- 01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44 :00\n2018-01-02 10:44:00\n2018-01-02 10:44:00' 날짜: 잘못된 날짜 `2018-01-02 05:44:00\n2018-01-02 05:44: 00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01- 02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00\n2018-01-02 05:44:00 \n2018-01-02 05:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\ n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00\n2018-01-02 10:44:00'
답변1
데이터가 다음 위치에 있다고 가정하면 이렇게 됩니다.
IFS=,;while read line; do
ff=($line);
ff[0]=`date -d "${ff[0]}" +%s`;
ff[1]=`date -d "${ff[1]}" +%s`;
echo "${ff[*]}";
done < file.in > file.out
참고: 원본 형식에 따라 날짜 명령에 'UTC'를 추가해야 할 수도 있습니다.
이제 귀하의 의견에 따라 해당 위치에서 수행하려면 모든 파일을 반복해야 합니다. 예를 들어 find 명령을 사용하여 /mypath/to-files/에서 모든 .csv 파일을 반복적으로 일치시킵니다.
for file in $(find /mypath/to-files -name "*.csv"); do
cp $file /tmp/tmp.csv
IFS=,;while read line; do
ff=($line);
ff[0]=`date -d "${ff[0]}" +%s`;
ff[1]=`date -d "${ff[1]}" +%s`;
echo "${ff[*]}";
done < /tmp/tmp.csv > $file
done