使用sed在特定行之后添加换行符

时间:2015-01-23 19:59:29

标签: regex bash awk sed

我输出为:

A: this thing
B: that thing
A: 23
B: 46
A: negative
B: positive

我使用sed / awk创建。我怎样才能使用sed(我认为sed是正确的选择?)在每个B:行之后添加换行符来产生:

A: this thing
B: that thing

A: 23
B: 46

A: negative
B: positive

6 个答案:

答案 0 :(得分:2)

使用awk你可以这样做:

awk '{print} /^B:/{print ""}' file
A: this thing
B: that thing

A: 23
B: 46

A: negative
B: positive

答案 1 :(得分:2)

sed '/^B:/a\
    ' file

a命令追加匹配行后面的内容。

您还可以执行's/^B:.*/&\n/'之类的操作,编辑该行并添加换行符。

awk中也很容易处理。

答案 2 :(得分:2)

使用GNU sed(使用G选项附加保留空间(默认为空)以模式空间):

sed '/^B:/G' file
A: this thing
B: that thing

A: 23
B: 46

A: negative
B: positive

答案 3 :(得分:1)

使用sed的一种方式...

sed 's/^\(B:.*\)/\1\n/'

@JonathanLeffler评论如下:

sed 's/^B:.*/&\n/'

答案 4 :(得分:1)

尝试这样的事情:

sed -E -i 's:(^B.*$):\1\n:g' filename

它会在filename中以字母B开头的每一行附加一个新行。

答案 5 :(得分:0)

这是另一个awk

awk '/^B:/ {$0=$0"\n"} 1' file
A: this thing
B: that thing

A: 23
B: 46

A: negative
B: positive