合并文本中的几行

合并文本中的几行

如何在文本文件中将某些特定的行连接在一起?

例如,

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

这里是:

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 - 手册 - 连接以空格开头的行

相关内容