sed를 사용하여 || 기호를 |""|로 바꾸는 방법

sed를 사용하여 || 기호를 |""|로 바꾸는 방법

|구분 기호로 사용하는 파일이 있습니다 . 일부 레코드에는 빈 셀이 있습니다 ||(아무것도 없음). 나는 |""|그것을 다음 sed 명령으로 바꾸려고했습니다.

sed -i 's/\|\|/\|""|/g' file

하지만 결과는 내가 기대했던 것과 달랐다.

입력 파일

A|B|C|D|||E

원하는 출력:

A|B|C|D|""|""|E

레코드의 시작과 끝에는 "|"가 없습니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

출력이 변경되지 않을 때까지 대체를 반복하십시오.

$ echo 'A|B|C|D|||E' | sed ':X;s/||/|""|/g;tX'
A|B|C|D|""|""|E

어디

  • :X라벨 설정X
  • t XX성공 하면 s///라벨로 이동

관련 정보