我需要在 bash 脚本中转换下面的文本
111319 2036
到
19年11月13日 20:36
这是可能的?
问候。
答案1
使用 GNU awk:
awk -v FIELDWIDTHS='2 2 2 1 2 2' '{ print $1 "/" $2 "/" $3 " " $5 ":" $6 }'
答案2
传统的解决方案是做一些事情sed
sed 's!^\(..\)\(..\)\(..\) \(..\)\(..\)!\1/\2\/\3 \4:\5!'
例如:
% echo 111319 2036 | sed 's!^\(..\)\(..\)\(..\) \(..\)\(..\)!\1/\2\/\3 \4:\5!'
11/13/19 20:36
也有可能出现纯粹的bash
解决方案。
例如,如果您有 $a 中的值,那么
${a:0:2}/${a:2:2}/${a:4:2} ${a:7:2}:${a:8:2}
例如:
$ a="111319 2036"
$ echo ${a:0:2}/${a:2:2}/${a:4:2} ${a:7:2}:${a:8:2}
11/13/19 20:03
答案3
echo "111319 2036"| awk '{print substr($1,1,2)"/"substr($1,3,2)"/"substr($1,5,2) " " substr($NF,1,2)":"substr($NF,3,4)}'
输出
11/13/19 20:36