데이터 세트의 날짜 형식을 지정하는 데 사용했던 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
이 질문에는 두 가지 측면이 있습니다.
행 기반 컨텍스트에서는
.
다음과 일치합니다 .어느문자 - 포함,
g
sed에게 한 줄에서 가능한 한 많은 대체 작업을 수행하도록 지시하는 플래그를 사용했습니다.
따라서 쉼표로 구분된 6개 문자의 겹치지 않는 모든 시퀀스와 일치합니다.
예제 데이터의 경우 첫 번째 일치하는 시퀀스만 대체되도록 플래그를 제거하는 것으로 충분 하지만 (쉼표 이외의 문자) 또는 (라틴어 십진수) 와 같은 보다 구체적인 항목으로 바꾸는 것도 g
고려해야 합니다. ..
[^,]
[0-9]