Я предлагаю заменить newline+"+newline
на "
и пробел, а любые другие newline
на пробел:
sed -i -E ':a;N;$!ba;s/\n(")\n|\n/\1 /g' file
sed -i ':a;N;$!ba;s/\n"\n/" /g; s/\n/ /g' file
или
sed -e ':a;N;$!ba' -e 's/\n"\n/" /g' -e 's/\n/ /g' file > newfile
LINE ЗАКЛЮЧЕНИЕ : Если ваши окончания - CRLF, вам необходимо заменить \n
на \r\n
в приведенных выше шаблонах.
Примечание -E
включит синтаксис POSIX ERE (чтобы избежать использования слишком большого количества обратных косых черт) в выкройке). Регулярное выражение означает
\n(")\n
- новую строку, затем "
захватывается в Группу 1, а затем новую строку |
- или \n
- новая строка.
Замена - это значение Группы 1 ("
, если оно было найдено) и пробел.
См. онлайн sed
демонстрацию :
s='<link rel="colorSchemeMapping
"
href="marinedrugs-790193-original.fld/colorschememapping.xml">'
sed -E ':a;N;$!ba;s/\n(")\n|\n/\1 /g' <<< "$s"
# => <link rel="colorSchemeMapping" href="marinedrugs-790193-original.fld/colorschememapping.xml">