在使用sed模式之前,如何删除换行/换行符

Mar*_*tin 4 awk sed

标题已注明:

我想使用一些Linux一线(例如sed)

转变

Anytext
{
Run Code Online (Sandbox Code Playgroud)

进入

Anytext{
Run Code Online (Sandbox Code Playgroud)

可以使用sed来完成此操作,如果不使用sed则可以使用awk一个内衬来完成?

Lev*_*sky 5

当然,

sed 'N;s/\n{/{/'
Run Code Online (Sandbox Code Playgroud)

或更完整的版本:

sed ':r;$!{N;br};s/\n{/{/g'
Run Code Online (Sandbox Code Playgroud)

在这里,:r设置一个我们可以引用的标签以创建一个循环;

$!{...} 对除最后一行以外的每一行执行给定的命令集;

N;br在循环中执行以下两个命令:N在模式空间中添加新行,然后br分支回到label r,完成循环。

然后,当您运行最终命令时,所有文件都位于模式空间中:

s/\n{/{/g
Run Code Online (Sandbox Code Playgroud)

如果您尝试使用类似的方法,则可以看到两种方法之间的差异

Anytext
{
{
{
Run Code Online (Sandbox Code Playgroud)

  • @Martin`N`在模式空间中追加了一行,因此模式空间中有两行以`\ n`分隔。有关命令列表,请参见`man sed`;有关更广泛的参考,请参见[here](http://www.grymoire.com/Unix/Sed.html)。 (2认同)
  • @AnnevanRossum谢谢。我添加了简短的解释,希望对您有所帮助。 (2认同)