Как заменить символ || на |""| с помощью 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 Xперейти к метке X, если s///все прошло успешно

Связанный контент