sed를 사용하여 날짜 출력 구문 분석

sed를 사용하여 날짜 출력 구문 분석

날짜 출력의 공백을 "_"로 바꾸려고 하는데 성공하지 못했습니다.

$date
Fri Sep 14 14:10:04 EDT 2012

$ date | sed 's/ /_/'
Fri_Sep 14 14:10:24 EDT 2012

보시다시피, 마지막 명령은 첫 번째 공백만 _'으로 바꿉니다. 왜 다른 공백은 건너뛰나요?

답변1

노력하다:

$ date | tr ' ' '_'

또는

$ date | sed 's/ /_/g'

의 기본 동작이므로 명령은 날짜 입력에서 첫 번째로 일치하는 인스턴스만 바꿉니다 sed. g명령 끝에 (전역 대체) 옵션을 추가 하면 sed해당 표현식의 모든 항목이 일치되고 대체됩니다.

답변2

내 2 센트. 날짜를 한 단어로 표시하려는 경우 좋은 형식은 다음과 같습니다.ISO 8601 표준2012-09-14T21:08:12. 간결하고 명확하며, 연대순은 알파벳순과 동일합니다.

date +%Y-%m-%dT%T

일부 시스템에서는 다음과 같이 작성할 수도 있습니다.

date +%FT%T

그러나 일광 절약 시간제를 시행하는 시간대에서는 이것이 여전히 불분명합니다. 추가하면 %z모호함이 제거되지만 주문에는 도움이 되지 않습니다. 또 다른 옵션은 시간대 독립적인 UTC 시간( 사용 -u) 또는 Unix Epoch 시간(일부 구현의 경우)을 표시하는 것입니다.%s

관련 정보