首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用sed删除模式前的换行符/换行符

如何使用sed删除模式前的换行符/换行符
EN

Stack Overflow用户
提问于 2012-08-26 19:49:12
回答 5查看 9.8K关注 0票数 7

标题已经说过了:

我想使用一些linux one liner (例如sed)

转型

代码语言:javascript
复制
Anytext
{

转到

代码语言:javascript
复制
Anytext{

这可以使用sed来完成吗?如果不能使用sed,那么可以使用awk one liner来完成。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-08-26 19:53:45

好的,

代码语言:javascript
复制
sed 'N;s/\n{/{/'

或者更全面的版本:

代码语言:javascript
复制
sed ':r;$!{N;br};s/\n{/{/g'

这里,:r设置了一个标签,我们可以参考它来创建一个循环;

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

N;br是get在循环中执行的两个命令:N将新行附加到模式空间,br分支回到标签r,完成循环。

然后,当您运行最后一个命令时,您的所有文件都在模式空间中:

代码语言:javascript
复制
s/\n{/{/g

如果您在下面这样的东西上尝试,就可以看到这两种方法之间的区别

代码语言:javascript
复制
Anytext
{
{
{
票数 7
EN

Stack Overflow用户

发布于 2012-08-26 20:02:13

使用sed的一种方式

代码语言:javascript
复制
sed -ne '$! N; /^.*\n{/ { s/\n//; p; b }; $ { p; q }; P; D' infile

一个测试。假设infile包含content:

代码语言:javascript
复制
one
Anytext
{
two
three
{
four
five
{

输出将为:

代码语言:javascript
复制
one
Anytext{
two
three{
four
five{
票数 2
EN

Stack Overflow用户

发布于 2012-08-26 20:07:59

如果要从\n{序列中删除换行符,bbe似乎是最简单的工具:

代码语言:javascript
复制
bbe -e 's/\n{/{/' infile
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12129870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档