1

Предположим, у меня есть входная строка:

,,a,b,c,,,,d,e,f,,,g

Есть ли простая команда sed, которая может вставить что-то между каждой парой последовательных запятых? То есть, что я могу использовать для преобразования входной строки в:

0,0,a,b,c,0,0,0,d,e,f,0,0,g

1 ответ1

2

Вам нужно использовать цикл с sed:

sed 's/^,/0,/; :a; s/,,/,0,/g; ta'

Документировано здесь: https://www.gnu.org/software/sed/manual/sed.html#Programming-Commands

Но я бы использовал Perl или AWK

perl -pe 's/(?:^|,)\K(?=,|$)/0/g'
awk -F, -v OFS=, '{for (i=1; i<=NF; i++) if ($i == "") $i=0};1'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .