替换shell脚本中包含\ t \ n的字符串

时间:2016-12-20 11:48:10

标签: bash shell replace sed tr

文件foo.h是:

do {                                                              \
        if (a == b) {                                      \
            c = 1;                                         \
        }                                                         \
    \
} while (0)

在此,对于最后2行,模式将是

  

" \ t \\\ n} while(0)"

我想用

替换这个模式
  

" \ t}而(0)"。

我试过

  

sed -i - ' s / \ t \\\ n}而(0)/ \ t}而(0)/ g' " foo.h中"

。但我没有达到预期的效果。 我想最终的foo.h应该是这样的:

 do {                                                              \
        if (a == b) {                                      \
            c = 1;                                         \
        }                                                         \
} while (0)

我们无法取代" \ t \\ n"一起?或其他任何实用程序?

2 个答案:

答案 0 :(得分:1)

您可以使用此gnu-sed命令:

sed -i 'N;s/\t\\\n\(} while (0)\)/\1/' foo.h

cat foo.h

do {                                                              \
        if (a == b) {                                      \
            c = 1;                                         \
        }                                                         \
} while (0)

答案 1 :(得分:1)

你的问题是,sed读取并替换行。

这可以按照here, by Zsolt Botykai

的解释来规避

因此,工作命令是:

public virtual IEnumerable<Guid> Themes  {get; set;}