날짜 출력에서 ​​선행 0 제거


40

date 명령의 별칭을 만들어 다음 형식으로 날짜를 표시했습니다.

2013.06.14.12.10.02

이 명령을 사용하여 :

alias date = date +"%Y.%m.%d.%H.%M.%S"

출력에서 선행 0을 제거하려는 것을 제외하고는 모든 것이 잘 작동합니다.

형식을 변경하여이를 수행 할 수있는 방법이 없습니다. 나는 출력을 sedand와 같은 다른 명령으로 파이프로만 연결하여 수행 할 수 있다고 생각합니다 awk.

내가 실행중인 OS는 Ubuntu 12.04.2 LTS입니다.


어떤이 없습니다 후행 제로는 예 (물론, 당신은 계산하지 않는 010시간 과거 분 만 제거하는 변경 사항은 타임 스탬프의 의미 있음). 나는 당신이 선행 제로 (각 날짜 구성 요소의 시작 부분에서 제로) 를 의미한다고 생각합니다 .이 경우 GNU userland를 사용하는 경우 @ j883376의 대답 이 유용 할 것입니다. 그렇지 않으면, 환경을 지정하십시오 (사용자 도구는 모든 유닉스 계열 OS에서 동일하지 않으며 모든 도구가 모든 OS에서 사용 가능한 것은 아닙니다).
CVn

예, 제목이 잘못되었지만 게시물이 정확했지만 혼란을 드려 죄송합니다.
easl

걱정 마. 그러나 일반적으로 환경을 지정하는 것이 좋습니다. OS X은 OpenBSD와 다르며 AIX와는 다릅니다. GNU와 다릅니다. 환경을 지정하면 사용하지 않는 답변을 얻을 위험이 없습니다 (예 : OS X에서 문제를 해결하려고 할 때 Linux의 / proc 사용을 제안하는 답변).
CVn

2
참고 : 선행 0을 제거하면 필요한 경우 날짜별로 정렬하기가 더 어렵다는 점에 유의하십시오.
Dubu

답변:


74

GNU date맨 페이지에 따라 :

   By default, date  pads  numeric  fields  with  zeroes.   The  following
   optional flags may follow '%':

   -      (hyphen) do not pad the field

그러므로 당신은 할 수 있습니다

alias date="date '+%Y.%-m.%-d.%-H.%-M.%-S'"

받고

2013.6.14.3.19.31

형식에 대한 올바른 구문은 stackoverflow.com/questions/29659069/…
user13107

4

어리석은 느낌이지만이 질문에 태그가 지정되어 /sed있으므로 sed 로이 작업을 수행하는 방법이 있습니다.

alias date='date +"%Y.%m.%d.%H.%M.%S" | sed "s/^0*//g; s/\.0*/./g"'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.