我想用“:”模式替换文件中的毫秒字段为“。”图案。
Input:-
Jun 12 2018 3:33:49:000PM
Jun 12 2018 3:33:49:850AM
Desired Output:-
Jun 12 2018 3:33:49.000PM
Jun 12 2018 3:33:49.850AM
我已经从我这边尝试了下面的 Sed 命令,但没有得到 100% 的结果,下面是我的 SED 命令:-
cat input.txt | sed 's/\(|\|^\|[A-Z]\)\([^|\]*\):\([0-9]\+\)\(AM\|PM\)\(|\|$\)/\1\2.\3 \4\5/g;s/"/ /g;s/:000/.000 /g' >output.txt
答案1
尝试:
sed -E 's/:([0-9]+[AP]M$)/.\1/'
我没有试图找出你的正则表达式出了什么问题,但就我个人而言,除非你必须这样做,否则我不会费心去匹配行的开头。只匹配行尾也应该更快。
答案2
最后,您想用点替换第三个冒号:
sed 's/:/./3' input.txt
答案3
我尝试过下面的 sed 命令,它解决了我的目的
sed -e 's/([AZ][az]{2}[ ]{1,2}[0-9]{1,2}[ ]{1,2}[0-9]{4}[ ] {1,2}[0-9]{1,2}:[0-9]{2}:[0-9]{2}):([0-9]{3}[A,P]M )/\1.\2/g'