echo "INFO|2016-11-06 18:44:07.577|G|SOME_THING_IN_CAPS|/something/pages1.html" | \
sed -rn "s/(.*\|)([0-9]{4}-[0-9]{2}-[0-9]{2})\ ([0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3})\2\3/p"
嗨,大家好,
我正在尝试从上面的行中提取日期和时间。你能告诉我缺少什么吗?
我收到此错误,不知道如何解决问题
sed: -e expression #1, char 81: unterminated `s' command
答案 0 :(得分:2)
命令中没有替换字符串。 s
命令必须包含3个分隔符:s/pattern/string/
。
试试这个:
$ echo "INFO|2016-11-06 18:44:07.577|G|SOME_THING_IN_CAPS|/something/pages1.html" | sed -rn "s/.*\|([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3}).*/\1/p"
2016-11-0618:44:07.577
此外,正如评论中所指出的那样:
\.[0-9]{3}
而不是.[0-9]{3}
)进行转义,但不能以空格字符({2} [0-9]
,而非{2}\ [0-9]
答案 1 :(得分:2)
awk
或cut
更适合此任务
$ s='INFO|2016-11-06 18:44:07.577|G|SOME_THING_IN_CAPS|/something/pages1.html'
$ echo "$s" | awk -F\| '{print $2}'
2016-11-06 18:44:07.577
$ echo "$s" | cut -d\| -f2
2016-11-06 18:44:07.577