Shell-Script
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 的工作。
有任何想法嗎?
您的模式匹配時間以
.000
(literal) 結尾,並且沒有一行包含這樣的時間。您基本上沒有匹配項,因此永遠不會觸發替換。