У меня есть файл, который использует |
в качестве разделителя. Некоторые записи имеют пустые ячейки ||
(внутри ничего). Я пытаюсь заменить их |""|
следующей командой 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///
все прошло успешно