날짜를 "2011년 7월 29일"을 "20110729"로 변경합니다.

날짜를 "2011년 7월 29일"을 "20110729"로 변경합니다.

날짜와 형식이 포함된 HTML 파일이 많이 있습니다.July 29th, 2011

날짜 형식을 , to 등 July 29th, 2011으로 변경하고 싶습니다 .20110729December 9th, 201020101209

작동할 수도 있을 것 같지만 sed간접적인 순서로 인해 여전히 해결책을 찾을 수 없습니다.

답변1

이런 종류의 일은 대부분의 도구보다 훨씬 더 어렵습니다. GNU 와 Perl의 POSIX 모듈은 모두 사용자 가 원하는 것을 awk제공 strftime()하지만 정확하게는 제공하지 않습니다 .strptime()

어쨌든 Perl을 사용하는 것은 여전히 ​​쉽네요...

$ perl -MDate::Manip -lpe '$_=UnixDate(ParseDate($_), "%Y%m%d")' <<END
> July 29th, 2011
> December 9th, 2010
> END
20110729
20101209

실제로 HTML을 변환하려고 하기 때문에 분명히 더 많은 것이 있습니다. sed를 사용하여 정규식을 찾을 수 있다면찾다날짜 문자열을 사용하면 Perl을 사용하여 매우 유사한 작업을 수행할 수 있습니다.

$ perl -MDate::Manip -lpe 's/(")([^"]+)(")/$1 . UnixDate(ParseDate($2), "%Y%m%d") . $3/ge' <<END
dates enclosed "July 29th, 2011" in quotes
"December 9th, 2010"
END
dates enclosed "20110729" in quotes
"20101209"

관련 정보