sed:如何删除当前行的第一个字符的“{”,并通过sed将“{”添加到上一行的末尾?

时间:2016-01-13 11:31:08

标签: regex sed

我正在编写一个sed脚本,但我不知道如何实现以下功能:

更新

如果当前行的第一个非空白字符是“{”,请将其删除并在上一行的末尾添加“{”。

例如:

class test
{
     function fun()
     {
         if(true)
         {
             //do something
         }
     }
}

我需要以下结果:

class test{

     function fun(){

         if(true){

             //do something
         }
     }
}

谁能帮帮我?

2 个答案:

答案 0 :(得分:2)

单程

sed 'N;:1;$!N;s/\n{/{\n/;P;D;b1' file

输入

123
456
{345
678
{10112
{232

输出

123
456{
345
678 {
10112{
232

如果有"空格"在{

之前
sed 'N;:1;$!N;s/\n[[:space:]]*{/{\n/;P;D;b1' file

还会在{

之前删除空行

答案 1 :(得分:0)

这可能适合你(GNU sed):

sed 'N;s/\s*\n\s*{/{\n/;P;D' file