我尝试使用 sed 以获得以下输出>来自字符串09 Aug 2017 14:15:11
09/Aug/2017:14:15:11
当我使用以下代码
时sed 's/^\(\d+\)\/\(\w+\)\/\(\d+\)\:\(.*\)$/\1 /p' <(echo "09/Aug/2017:14:15:11")
我将整个输入字符串作为输出:
09/Aug/2017:14:15:11
我这样做是为了对结果执行date -d
命令,因为date -d 09/Aug/2017:14:15:11 +%s
给了我这个错误:date: invalid date ‘09/Aug/2017:14:15:11’
。
如果您有其他建议而不是使用 sed ,请不要犹豫提出建议。
谢谢!
答案 0 :(得分:2)
使用sed
:
$ echo "09/Aug/2017:14:15:11" | sed -e 's#/# #g' -e 's/:/ /'
09 Aug 2017 14:15:11
我们在这里使用两个search and replace命令,一个在另一个之后运行。第一个用空格(g
→/
)替换全部(注意全局标志,)斜杠,第二个用第一个冒号替换第一个冒号({{1} }→
:
)(注意缺少标志)。两者都是搜索和替换命令(
g
),但第一个使用s
作为分隔符而不是标准#
,因此我们不必转义我们正在搜索的斜杠。
答案 1 :(得分:0)
我认为以下命令更好:
date "+%d %h %Y %H:%M:%S"