0

该字符串Fri May 3 13:50:37 2013必须重新排序为Fri 3 May 2013 13:50:37. 如何使用 来实现这一点sed

4

4 回答 4

1

sed不是您想要的正确工具awk

$ echo "Fri May 3 13:50:37 2013" | awk '{print $1,$3,$2,$5,$4}'
Fri 3 May 2013 13:50:37

Inawk $i代表第 i字段,因此只需按所需顺序排列字段。

于 2013-05-03T08:26:49.683 回答
1

如果date命令可以用于日期处理,我会支持date命令。

kent$  date -d"Fri May 3 13:50:37 2013" +"%a%e %b %Y %T"                             │       %M     minute (00..59)
Fri 3 May 2013 13:50:37 
于 2013-05-03T08:31:42.263 回答
1

在正则表达式中使用反向引用并匹配子模式。

sed -E 's/^(...) (...) ([0-9]+)(.*)([0-9]{4})$/\1 \3 \2 \5 \4/'
于 2013-05-03T08:50:18.407 回答
0

这可能对您有用(GNU sed):

sed -r 's/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ([123]?[0-9]) /\2 \1 /g' file
于 2013-05-03T11:02:48.967 回答