sed 's/\(:[0-9][0-9]\)\.[0-9]\{3\}/\1/g' input_file.csv > output.csv
Вы были почти там.В классическом sed
вы должны использовать обратную косую черту перед скобками и скобками, чтобы превратить их в метасимволы.Некоторые версии sed
могут иметь механизм для инвертирования операций, так что скобки и скобки по умолчанию являются метасимволами, но это не надежно для разных платформ.
Также (сильная рекомендация): используйте одинарные кавычки вокруг sedкоманда.В противном случае оболочка получает трещину при интерпретации этих обратных слешей (и любых знаков $
и т. Д.) До того, как sed
увидит их.Обычно это смущает кодера (и особенно кодера поддержки).На самом деле, используйте одинарные кавычки вокруг аргументов программ, когда вы можете.Не впадайте в паранойю - если вам нужно интерполировать переменную, сделайте это.Но одиночные кавычки, как правило, легче кодировать и, в конечном счете, легче понять.
Я решил работать только с одной единицей времени;ты работал над тремя.В конечном итоге, учитывая систематически сформированные входные данные, в результате нет разницы - но есть (небольшая) разница в читаемости сценария.