将匹配的行与sed合并

时间:2013-01-21 12:07:18

标签: sed

我在这里看到了一些答案,但不能让它们适合我。 我有这样的文字:

line1
line2 text=^M
line3
line4

基本上我需要的是用=^M\n之类的空字符替换s/=^M\n//,所以输出是(^ M是特殊字符ctrl + v ctrl + m)

line1
line2 textline3
line4

我知道它有一些sed分支,但我有问题让它们工作。

2 个答案:

答案 0 :(得分:1)

一种方式:

$ sed '/^M/{N;s/=^M\n//;}' file
line1
line2 textline3
line4

其中^ M必须输入为:Ctrl-V + Ctrl-M

答案 1 :(得分:1)

awk解决方案

 #awk -f myawk.sh temp.txt
   BEGIN { print "Start Records"}
   {
       if ($2 ~ /=\^M/){
           a=$1;
           gsub("=\\^M","",$2);
           b=$2; f=1
       }
       else {
          if(f==1){
              print a""b""$0;
              a="";
              b="";
          }else{
          print $0
          }
      }
  }
  END {print "Process Complete"}