날짜 출력의 공백을 "_"로 바꾸려고 하는데 성공하지 못했습니다.
$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