我有一个csv文件,其中包含以下字符串:
"2016-10-25T14:07:49.298-07:00"
我想替换为:
"2016-10-25", "14:07:49"
我将原始字符串与正则表达式匹配:
([0-9]{4}-[0-9]{2}-[0-9]{2})[T]([0-9]{2}\:[0-9]{2}\:[0-9]{2})\.[0-9]{3}-07\:00
但我需要一些帮助
答案 0 :(得分:2)
使用awk
,假设T
和.
是唯一的
$ echo '"2016-10-25T14:07:49.298-07:00"' | awk -F'[T.]' '{print $1 "\", \"" $2 "\""}'
"2016-10-25", "14:07:49"
-F'[T.]'
将T
或.
指定为字段分隔符答案 1 :(得分:1)
使用sed
:
sed -E 's/^([^T]+)T([^.]+).*/\1", "\2"/'
^([^T]+)
匹配最高T
的部分,并将其放入捕获的第1组
T
字面匹配T
([^.]+)
与下一个.
匹配,并将其放入捕获的组(2)
.*
与其他
在替换中,捕获的组使用正确的格式来获得所需的输出,\1", "\2"
示例:强>
$ sed -E 's/^([^T]+)T([^.]+).*/\1", "\2"/' <<<'"2016-10-25T14:07:49.298-07:00"'
"2016-10-25", "14:07:49"