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
// 하이브리드tac
paste
$ 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