Bash 스크립트 변환

Bash 스크립트 변환

Bash 스크립트에서 다음 텍스트를 변환해야 합니다.

111319 2036

도착하다

2019년 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

관련 정보