linux sed命令,如何替换换行符“\n”

在一次sed使用中,执行命令:

sed "s/\n//g" file

1

发现,没起到任何效果。

后来,经查sed官方用户手册,才得知,sed是按行处理文本数据的,每次处理一行数据后,都会在行尾自动添加trailing newline,其实就是行的分隔符即换行符。

如果非要使用sed命令,实现替换file文本内容的换行符为空的话,那么就要了解sed的分支条件命令,以及了解sed的pattern space模式空间和hold space保持空间。即,连续两行执行一次sed命令,这样就可以把前一行的\n替换完成。

这个基础内容,可以百度,也可以参考下文连接:

最终程序和执行结果如下例所示:

qilei@AFAAW-704030720:~$cat a.txt

a11111

a22222

a33333

qilei@AFAAW-704030720:~$sed "s/\n//g" a.txt

a11111

a22222

a33333

qilei@AFAAW-704030720:~$sed ":a;N;s/\n//g;ta" a.txt

a11111a22222a33333

qilei@AFAAW-704030720:~$

1

2

3

4

5

6

7

8

9

10

11

实现方法

第一种方法:使用test跳转命令,实现替换换行符

sed ":a;N;s/\n//g;ta" a.txt

1

N是把下一行加入到当前的hold space模式空间里,使之进行后续处理,最后sed会默认打印hold space模式空间里的内容。也就是说,sed是可以处理多行数据的。

:a和ta是配套使用,实现跳转功能。t是test测试的意思。

另外,还有:a和ba的配套使用方式,也可以实现跳转功能。b是branch分支的意思。

branch和test区别

branch循环到文本结束。比如sed ":a;N;s/\n//g;ba" a.txt,转换成自然语言的描述,就是

while(1) {

N;

s/\n//g;

}

1

2

3

4

test可以根据替换命令的完成是否成功,决定是否跳转。比如sed ":a;N;s/\n//g;ta" a.txt,转换成自然语言的描述,就是

while(state == 1) { #注释:默认state就当是1好了。

N;

s/\n//g;#注释:成功,返回state为1;否则返回state=0。此state用于跳转判断。

}

else {

last; #注释:即退出循环语句。

}

1

2

3

4

5

6

7

第二种方法:使用branch跳转命令,实现替换换行符

qilei@AFAAW-704030720:~$sed ":a;N;s/\n//g;$!ba" a.txt

a11111a22222a33333

qilei@AFAAW-704030720:~$

1

2

3

增加$!ba语句,$的意思是最后一行,不跳转到标记a处,即退出命令循环。

同理,也可以用下述命令。

qilei@AFAAW-704030720:~$sed ":a;$!N;s/\n//g;ba" a.txt

a11111a22222a33333

qilei@AFAAW-704030720:~$

1

2

3

linux中sed如何替换换行符,linux sed命令,如何替换换行符“\n”相关推荐

  1. linux中打开pdf文件_在Linux中减少PDF文件大小

    linux中打开pdf文件 In our Linux system, If we have a large PDF file, we may want to reduce it's size. We ...

  2. Linux下dislocate命令用法,在 Linux 中遨游手册页的海洋 | Linux 中国

    原标题:在 Linux 中遨游手册页的海洋 | Linux 中国 Linux 系统上的手册页可以做的不仅仅是提供特定命令的信息.它们可以帮助你发现你没有意识到的命令. https://linux.cn ...

  3. linux mv复制命令,linux中删除复制移动文件rm,mv,cp命令详解linux操作系统 -电脑资料...

    在linux中对文件的复制删除移动分别会使用到rm,mv,cp三个命令,下面我来给大家介绍一下rm,mv,cp命令对文件的常规操作吧, 先看实例 删除复制移动文件命令 Linux代码 rm -rf / ...

  4. linux mysql命令行导入_在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)...

    因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客 ...

  5. Linux中ls查看前十个文件,linux ls命令的20个实用范例

    Linux中一个基本命令是ls.没有这个命令,我们会在浏览目录条目时会遇到困难.这个命令必须被每个学习Linux的人知道.接下来是小编为大家收集的linux ls命令的20个实用范例,欢迎大家阅读: ...

  6. linux中的绝对路径 lt gt,Linux中目录以及路径问题

    具体参考:https://www.cnblogs.com/OctoptusLian/p/8546580.html 在Linux中,存在着绝对路径和相对路径 绝对路径:路径的写法一定是由根目录 / 写起 ...

  7. 在linux中删除多级目录,如何在Linux中删除目录

    在Linux系统中,有几种删除目录的方法.如果使用桌面文件管理器,例如Gnome的文件或KDE的Dolphin,则可以使用图形用户界面管理器删除文件和目录.但是,如果您在没有GUI的服务器上工作,或者 ...

  8. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  9. linux中exit和fatal区别,关于Linux系统命令中exit与exit的区别

    关于Linux系统命令中exit与exit的区别 注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和 ...

  10. linux中fopen和open的区别,Linux下open与fopen的区别

    int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: O_RDONLY      ...

最新文章

  1. perl学习之(not install YAML)解决
  2. Unity2017.1官方UGUI文档翻译——Scrollbar
  3. Windows xp下配置Apache、PHP环境及Oracle10g客户端
  4. try-catch-finally 与返回值的修改
  5. 怎么通俗的理解Netty呢?
  6. 请问在allegro中如何在铜箔上单独放置过孔?
  7. Keil C51软件的使用教程
  8. jquery对json 键值对或数组的增加、删除、遍历操作
  9. vue 插槽 有名插槽
  10. Redis安装+启动报错
  11. 详解Guitar Pro的自动化编辑器之节拍自动化
  12. springboot-redis读取配置文件
  13. 【疑问】互联网公募基金的销售是繁荣,还是乱象?
  14. Swift 5 用TableView实现动态Excel表格Spreadsheet
  15. python百度文库文字提取_百度文库文字爬取
  16. 案例推荐《微博:随时随地迎战大流量》
  17. php excel 高度,PHPExcel,自动调整行高
  18. 信息收集--关联信息及漏洞情报
  19. linux系统 插优盘安装xvidcap,Linux屏幕录像软件xvidcap的安装方法
  20. 谈谈网络工程师的就业方向与薪资水平

热门文章

  1. 千元机自拍新体验,vivo Z3是你会拍照的“男朋友”
  2. 三角形外接圆与内切圆
  3. springboot项目日志记录访问客户端ip地址
  4. 如何更聪明地学习:20种让你更高效学习的科学方法
  5. 浙大远程教育计算机小抄,一张A4纸能写多少个字?看完浙大考生的“小抄”,网友:稳过!...
  6. 几何分布及其期望计算
  7. 【单片机】msp430几种不同开发平台的对比
  8. Facebook 前端技术栈重构分享
  9. Android流星雨效果---史上最炫,浪漫,值得陪你女朋友一起看~ [捂脸]
  10. php百度优化,百度技术沙龙第 24 期 PHP 性能优化实践