如何在文本文件中将某些特定的行连接在一起?
例如,
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
以代替文件进行更改并创建备份文件。