OS X에서 특정 숫자 이후의 모든 항목을 sed로 바꾸는 방법


2

.csv마지막 '열'이 추가 ,문자 로 인해 다른 수의 열로 분리 되는 잘못된 파일 을 수정하려고합니다 . sed처음 4 개의 쉼표를 유지하고 나머지는으로 바꾸고 싶습니다 ;. 다음은 OS X에서 작동하지 않는 것 같습니다.

sed 's/,/;/4g' file

OS X에서 이에 대한 대안이 있습니까?

답변:


0

테스트 할 OSX 상자가 없지만 다음을 시도하십시오.

sed -E '
    s/^([^,]*),([^,]*),([^,]*),(.*)/\1\x1f\2\x1f\3\x1f\4/
    s/,/;/g
    s/\x1f/,/g
' file

그러면 처음 3 개의 쉼표가 ASCII "단위 구분 기호"제어 문자로 변환되고 나머지 모든 쉼표가 세미콜론으로 변환 된 다음 제어 문자가 다시 쉼표로 변환됩니다.

데모:

$ echo "a,b,c,d,e,f" | sed -E 's/^([^,]*),([^,]*),([^,]*),(.*)/\1\x1f\2\x1f\3\x1f\4/; s/,/;/g; s/\x1f/,/g'
a,b,c,d;e;f
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.