검색 패턴과 일치하는 값에 대해 작업을 수행하는 동안 파일을 내부에서 편집하려면 어떻게 해야 합니까?

검색 패턴과 일치하는 값에 대해 작업을 수행하는 동안 파일을 내부에서 편집하려면 어떻게 해야 합니까?

임의의 텍스트와 ISO 형식의 많은 날짜/시간(예: "2012-07-02T10:47:24+02:00")이 포함된 목록 파일이 있는 경우 이러한 모든 날짜/시간을 찾아 각각에 2를 추가하려면 어떻게 해야 합니까? 이상적으로는 하루가 24시간이라는 사실을 고려한 솔루션이 좋을 것입니다(예: "02T23:15 + 2"는 "02T25:15"가 아닌 "03T01:15"가 되어야 함). 그러나 제 경우에는 별거 아닙니다. 가능한 시간대 결과를 무시하고 이를 간단한 수학 연산으로 생각합시다.

예를 들어, 저는 Python에서 이 작업을 수행하는 방법을 이미 알고 있습니다. 모든 파일을 한 줄씩 읽고 날짜/시간이 발견되면 줄을 바꾸는 방법입니다. 하지만 awk나 sed를 사용하여 이 작업을 수행하는 더 직접적인 방법이 있는지 궁금합니다. ?

감사해요!

답변1

이것은 직업에 더 가깝습니다 perl.

perl -MTime::Piece -pi -e 's/\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d/
(Time::Piece->strptime($&,"%Y-%m-%dT%T")+2*3600)->datetime/ge' file1 file2...

관련 정보