sed 명령은 출력 파일이 기록되지 않은 경우에만 작동합니다.

sed 명령은 출력 파일이 기록되지 않은 경우에만 작동합니다.

이 파일 eq.txt를 변경하고 싶습니다.

2018-05-03T18:46:05.050Z 11.8314 44.0586 10 4.3 USGS
2018-05-01T05:16:59.270Z 11.0366 43.2334 10 4.1 USGS
2018-04-26T11:13:20.590Z -5.4109 36.5557 10 4 USGS
2018-04-25T09:48:42.940Z 14.8129 41.9053 10 4.3 USGS

eq-new.txt로

2018 05 03 18 46 05.050 11.8314 44.0586 10 4.3 USGS
2018 05 01 05 16 59.270 11.0366 43.2334 10 4.1 USGS
2018 04 26 11 13 20.590 -5.4109 36.5557 10 4 USGS
2018 04 25 09 48 42.940 14.8129 41.9053 10 4.3 USGS

다음을 사용하여 날짜 및 시간 형식을 변경합니다.

sed -r "s/([0-9.]+)-([0-9.]+)-([0-9.]+)T([0-9.]+):([0-9.]+):([0-9.]+)\.000Z/\1 \2 \3 \4 \5 \6.000/g" eq.txt

이것이 내가 원했던 것입니다.

하지만 결과를 eq-new.txt에 저장하고 싶기 때문에 이렇게 합니다.

sed -r "s/([0-9.]+)-([0-9.]+)-([0-9.]+)T([0-9.]+):([0-9.]+):([0-9.]+)\.000Z/\1 \2 \3 \4 \5 \6.000/g" eq.txt > eq-new.txt

불행히도 출력 파일이 잘못되었습니다. eq-new.txt의 날짜 및 시간 형식은 eq.txt와 동일합니다.

나는 또한 이것을 시도했다

tmp=$(sed -E "s/([0-9.]+)-([0-9.]+)-([0-9.]+)T([0-9.]+):([0-9.]+):([0-9.]+)\.000Z/\1 \2 \3 \4 \5 \6.000/g" tmp.txt)
echo -ne "$tmp" > eq-new.txt

더 이상 성공하지 마세요!

sed 및 outfiles에 대해 내가 찾은 것은 아무것도 작동하지 않았습니다.

어떤 아이디어가 있나요?

답변1

패턴 일치 시간은 .000(리터럴)로 끝나며 그러한 시간이 포함된 줄이 없습니다. 기본적으로 일치하는 항목이 없으므로 교체가 트리거되지 않습니다.

관련 정보