ファイルのミリ秒フィールドを「:」パターンに置き換えたいと思います。
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
最後に、3番目のコロンをドットに変えたいです。
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'