我正在尝试将2012年1月31日之间的数字格式交换为2012年1月31日。在Stack Overflow上查找了很多页面,却一无所获。有人可以帮我完成这项任务吗?
到目前为止,我已经尝试过:
echo 2012-01-31 | sed 's/^([0-9]*)-([0-9]*)-([0-9]*)/\3-\2-\1/'
我正在尝试将2012年1月31日之间的数字格式交换为2012年1月31日。在Stack Overflow上查找了很多页面,却一无所获。有人可以帮我完成这项任务吗?
到目前为止,我已经尝试过:
echo 2012-01-31 | sed 's/^([0-9]*)-([0-9]*)-([0-9]*)/\3-\2-\1/'
您可以使用date
先阅读然后格式化输出:
date -d 2012-01-31 +%d-%m-%Y
,
以下是您尝试执行的操作的正确版本。
let postman nobody
ask one-of turtles [
set postman my-postman
set shape "person"
; CHECK IF THERE IS ANY EMAIL FOR ME - function from here
if empty? mailbox [
let this-mail self
hatch-mail 1[
hide-turtle
set person postman
set this-mail self
... ; omitted for brevity
]
]
或没有扩展的正则表达式,
echo '2012-01-31' | sed -E 's/^([0-9]*)-([0-9]*)-([0-9]*)/\3-\2-\1/'
如果您知道输入是正确的,但是只需要重新排序,那么后面的操作会更简单。
echo '2012-01-31' | sed 's/^\([0-9]*\)-\([0-9]*\)-\([0-9]*\)/\3-\2-\1/'
纯bash,
echo '2012-01-31' | sed -E 's/^(....)-(..)-(..)/\3-\2-\1/'
,
使用GNU awk:
awk -v FIELDWIDTHS='4 1 2 1 2' '{ print $5,$3,$1 }' OFS=-
任何awk:
awk '{ print $3,$2,$1 }' FS=- OFS=-