Кроме упомянутого пакета ncurses-doc, не забудьте установить примеры!
Они бесценны ... установлены на /usr/lib/ncurses/examples и лучше просматривается с помощью dwww
Не sed, но perl:
perl -F, -ane '($f1)=$F[1]=~/(.*)"/; $F[2]=~s/\n//g; print "$F[0],$f1,\"$F[2]\"\n";'
Объяснение:
perl -F, -ane читает входную строку и разбивает линию на , ($f1)=$F[1]=~/(.*)"/; удаляет " во втором столбце $F[2]=~s/\n//g; удаляет новую строку в конце print "$F[0],$f1,\"$F[2]\"\n"; записывает вывод и добавляет " к последнему значению [d8 ] Изменить - сокращенную версию (спасибо @kos):perl -F, -lane '$F[1]=~s/"$//; print "$F[0],$F[1],\"$F[2]\"";'
Похоже, что ваши поля задаются запятыми. Если это так, вы можете сделать это в sed:
sed -i -r 's/",([^,]*)$/,"\1"/' file
Или в Perl:
perl -i -lpe 's/",([^,]*)$/,"\1"/' file
В обоих случаях регулярное выражение просто ищет запятую, затем 0 или более не запятыми до конца строки. Скобки фиксируют последние поля, которые мы теперь можем назвать \1 (или $1 в perl). Затем он заменяется собой внутри двойных кавычек. [F8] предназначен для редактирования файла на месте, изменения внесены в исходный файл.
Вы также можете использовать awk:
awk -F, -vOFS=, '{sub(/"/,"",$(NF-1)); $NF="\""$NF"\""}1;' file
Или, если ваша версия поддерживает его:
awk -iinplace -F, -vOFS=, '{sub(/"/,"",$(NF-1)); $NF="\""$NF"\""}1;' file