使用 sed 在特定行后添加换行符
add newline after specific lines with 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
使用 awk 可以做到:
awk '{print} /^B:/{print ""}' file
A: this thing
B: that thing
A: 23
B: 46
A: negative
B: positive
sed '/^B:/a\
' file
a
命令在匹配行之后附加以下内容。
您也可以执行类似 's/^B:.*/&\n/'
的操作,编辑行并添加换行符。
在awk
中也很容易处理。
一种方法使用 sed
...
sed 's/^\(B:.*\)/\n/'
或如下@JonathanLeffler评论:
sed 's/^B:.*/&\n/'
尝试这样的事情:
sed -E -i 's:(^B.*$):\n:g' filename
它在 filename
中以字母 B 开头的每一行都附加一个新行。
使用 GNU sed
(使用 G
选项附加保持 space(默认为空白)到模式 space:
sed '/^B:/G' file
A: this thing
B: that thing
A: 23
B: 46
A: negative
B: positive
这是另一个awk
awk '/^B:/ {[=10=]=[=10=]"\n"} 1' file
A: this thing
B: that thing
A: 23
B: 46
A: negative
B: positive
我的输出为:
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
使用 awk 可以做到:
awk '{print} /^B:/{print ""}' file
A: this thing
B: that thing
A: 23
B: 46
A: negative
B: positive
sed '/^B:/a\
' file
a
命令在匹配行之后附加以下内容。
您也可以执行类似 's/^B:.*/&\n/'
的操作,编辑行并添加换行符。
在awk
中也很容易处理。
一种方法使用 sed
...
sed 's/^\(B:.*\)/\n/'
或如下@JonathanLeffler评论:
sed 's/^B:.*/&\n/'
尝试这样的事情:
sed -E -i 's:(^B.*$):\n:g' filename
它在 filename
中以字母 B 开头的每一行都附加一个新行。
使用 GNU sed
(使用 G
选项附加保持 space(默认为空白)到模式 space:
sed '/^B:/G' file
A: this thing
B: that thing
A: 23
B: 46
A: negative
B: positive
这是另一个awk
awk '/^B:/ {[=10=]=[=10=]"\n"} 1' file
A: this thing
B: that thing
A: 23
B: 46
A: negative
B: positive