如何从sed的时间戳中删除毫秒?

SCO*_*SCO 1 regex grep sed

我的输入文件如下:

12/13/2011,07:14:13.724,12/13/2011 07:14:13.724,231.56.3.245,LasVegas,US
Run Code Online (Sandbox Code Playgroud)

我希望得到以下内容:

12/13/2011,07:14:13,12/13/2011 07:14:13,231.56.3.245,LasVegas,US
Run Code Online (Sandbox Code Playgroud)

我试过这个,但没有成功:

sed "s/[0-9]{2}\:[0-9]{2}\:[0-9]{2}\(\.[0-9]{1,3}\)/\1/g" input_file.csv > output.csv
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 5

sed 's/\(:[0-9][0-9]\)\.[0-9]\{3\}/\1/g' input_file.csv > output.csv
Run Code Online (Sandbox Code Playgroud)

你快到了.在经典中sed,您必须在括号和大括号前面使用反斜杠,以使它们成为元字符.某些版本sed可能具有反转操作的机制,因此默认情况下大括号和括号是元字符,但这在平台上并不可靠.

另外(强烈推荐):在sed命令周围使用单引号.否则,shell会$sed看到之前解释这些反斜杠(以及任何符号等).通常,这会使编码器(尤其是维护编码器)感到困惑.实际上,只要有可能,就可以在程序的参数周围使用单引号.不要对它产生偏执 - 如果你需要插入变量,就这样做.但单引号通常更容易编码,最终更容易理解.

我选择只工作一次; 你正在做三个.最终,给定系统形成的输入数据,结果没有差异 - 但脚本的可读性存在(小)差异.