sed 날짜 형식 문제

sed 날짜 형식 문제

데이터 세트의 날짜 형식을 지정하는 데 사용했던 sed 명령이 있습니다. 나는 구문에 대한 이해가 부족하다고 확신하는 문제에 직면했지만, 무슨 일이 일어나고 있는지 명확히 하는 데 도움을 줄 수 있는 사람이 있는지 궁금합니다.

입력하다:

26,082619,1300,1,2,0
26,082619,1400,332,8,190
26,082619,1500,442,10,118
26,082619,1600,530,151,12
26,082619,1700,534,164,0
26,082619,1800,538,176,0

주문하다

sed -E "s/,(.{2})(.{2})(.{2}),/,\1\/\2\/20\3,/g" input.csv > output.csv

출력(참고 3행)

26,08/26/2019,1300,1,2,0
26,08/26/2019,1400,332,8,190
26,08/26/2019,1500,44/2,/2010,118
26,08/26/2019,1600,530,151,12
26,08/26/2019,1700,534,164,0
26,08/26/2019,1800,538,176,0

예상 출력

26,08/26/2019,1300,1,2,0
26,08/26/2019,1400,332,8,190
26,08/26/2019,1500,442,10,118
26,08/26/2019,1600,530,151,12
26,08/26/2019,1700,534,164,0
26,08/26/2019,1800,538,176,0

답변1

이 질문에는 두 가지 측면이 있습니다.

  1. 행 기반 컨텍스트에서는 .다음과 일치합니다 .어느문자 - 포함,

  2. gsed에게 한 줄에서 가능한 한 많은 대체 작업을 수행하도록 지시하는 플래그를 사용했습니다.

따라서 쉼표로 구분된 6개 문자의 겹치지 않는 모든 시퀀스와 일치합니다.

예제 데이터의 경우 첫 번째 일치하는 시퀀스만 대체되도록 플래그를 제거하는 것으로 충분 하지만 (쉼표 이외의 문자) 또는 (라틴어 십진수) 와 같은 보다 구체적인 항목으로 바꾸는 것도 g고려해야 합니다. ..[^,][0-9]

관련 정보