Bash에서 날짜 변수를 재구성하는 방법

Bash에서 날짜 변수를 재구성하는 방법

dd.mm.yyyy사용자가 입력한 날짜를 다음 형식으로 가져오고 이를 변수로 저장하는 bash 스크립트가 있습니다. $date

yyyymmdd이제 추가 사용을 위해 이 변수를 다음 형식으로 수정해야 합니다 .

그래서 더 이상 포인트는 없고, 포인트 사이의 값은 뒤에서 앞으로 갑니다.

sed예를 들어, 이런 일을 쉽게 할 수 있는 방법이 있나요?

답변1

순수한 bash솔루션은 다음과 같습니다.

$ # input is dd.mm.yyyy
$ input_date="dd.mm.yyyy"
$ # output will be yyyymmdd
$ output_date=${input_date:6:4}${input_date:3:2}${input_date:0:2}
$ echo "$output_date"
yyyymmdd

답변2

이것이 나의 간단한 sed방법이다. 특별히 영리하지는 않지만 효과적입니다 :-)

$ IN=12.34.5678
$ OUT=$(echo $IN | sed 's/\(..\).\(..\).\(....\)/\3\2\1/')
$ echo $OUT
56783412
$

awk방법

$ OUT=$(echo $IN | awk -F. '{print $3$2$1}')
$ echo $OUT
56783412
$

tr// 하이브리드tacpaste

$ OUT=$(echo $IN | tr '.' '\n' | tac | paste -s -d "")
$ echo $OUT
56783412
$

답변3

echo "26.11.2016" | awk -F"." '{print $3$2$1}'

산출:20161126

답변4

date명령은 수정자를 사용하여 ISO8601 형식으로 출력할 수 있습니다.

robert@pip2:/tmp$ date
Mon Aug  5 16:09:35 PDT 2019

robert@pip2:/tmp$ date --iso-8601
2019-08-05

...그리고 사이에 있는 하이픈을 제거하세요. sed를 사용하세요:

robert@pip2:/tmp$ date --iso-8601 | sed s/-//g
20190805

관련 정보