Объединение некоторых строк в тексте

Как я могу соединить некоторые определенные строки вместе в текстовом файле ??

Например,

INT(6,4,54,4,1,-1,1,1,0,1,1)=
+INT(5,4,23,4,1,1,1,1,0,1,-1)
*(1)
+INT(5,4,23,4,0,1,1,1,0,1,0)
*(-M^2+a^2);
id INT(4,54,4,1,0,1,1,-1,1,1)=
+INT(4,23,4,1,1,1,1,-1,1,0)
*(1);

Я хотел бы поместить строки, начинающиеся с * на предыдущую строку, то есть

INT(6,4,54,4,1,-1,1,1,0,1,1)=
+INT(5,4,23,4,1,1,1,1,0,1,-1)*(1)
+INT(5,4,23,4,0,1,1,1,0,1,0)*(-M^2+a^2);
id INT(4,54,4,1,0,1,1,-1,1,1)=
+INT(4,23,4,1,1,1,1,-1,1,0)*(1);

вот так.

Я набрал

sed -i 'N;s/\n\*/\*/g' file_name

, но это не работает.

Заранее спасибо!

1
задан 4 August 2020 в 21:07

1 ответ

Вот он:

sed -E ':a ; $!N ; s/\n\*/\*/ ; ta ; P ; D' file_name

Или переносимый (не-GNU) вариант:

sed -e :a -e '$!N;s/\n\*/\*/;ta' -e 'P;D' file_name
  • Добавьте -i.bak для внесения изменений вместо файла. и создайте файл резервной копии.

Источник: gnu.org - sed - manual - Соедините строки, начинающиеся с пробела .

1
ответ дан 11 August 2020 в 20:11

Другие вопросы по тегам:

Похожие вопросы: