linux中sed如何替换换行符,linux sed命令,如何替换换行符“\n”
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”相关推荐
- 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 ...
- Linux下dislocate命令用法,在 Linux 中遨游手册页的海洋 | Linux 中国
原标题:在 Linux 中遨游手册页的海洋 | Linux 中国 Linux 系统上的手册页可以做的不仅仅是提供特定命令的信息.它们可以帮助你发现你没有意识到的命令. https://linux.cn ...
- linux mv复制命令,linux中删除复制移动文件rm,mv,cp命令详解linux操作系统 -电脑资料...
在linux中对文件的复制删除移动分别会使用到rm,mv,cp三个命令,下面我来给大家介绍一下rm,mv,cp命令对文件的常规操作吧, 先看实例 删除复制移动文件命令 Linux代码 rm -rf / ...
- linux mysql命令行导入_在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)...
因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客 ...
- Linux中ls查看前十个文件,linux ls命令的20个实用范例
Linux中一个基本命令是ls.没有这个命令,我们会在浏览目录条目时会遇到困难.这个命令必须被每个学习Linux的人知道.接下来是小编为大家收集的linux ls命令的20个实用范例,欢迎大家阅读: ...
- linux中的绝对路径 lt gt,Linux中目录以及路径问题
具体参考:https://www.cnblogs.com/OctoptusLian/p/8546580.html 在Linux中,存在着绝对路径和相对路径 绝对路径:路径的写法一定是由根目录 / 写起 ...
- 在linux中删除多级目录,如何在Linux中删除目录
在Linux系统中,有几种删除目录的方法.如果使用桌面文件管理器,例如Gnome的文件或KDE的Dolphin,则可以使用图形用户界面管理器删除文件和目录.但是,如果您在没有GUI的服务器上工作,或者 ...
- linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解
在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...
- linux中exit和fatal区别,关于Linux系统命令中exit与exit的区别
关于Linux系统命令中exit与exit的区别 注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和 ...
- linux中fopen和open的区别,Linux下open与fopen的区别
int open(const char *path, int access,int mode) path 要打开的文件路径和名称 access 访问模式,宏定义和含义如下: O_RDONLY ...
最新文章
- perl学习之(not install YAML)解决
- Unity2017.1官方UGUI文档翻译——Scrollbar
- Windows xp下配置Apache、PHP环境及Oracle10g客户端
- try-catch-finally 与返回值的修改
- 怎么通俗的理解Netty呢?
- 请问在allegro中如何在铜箔上单独放置过孔?
- Keil C51软件的使用教程
- jquery对json 键值对或数组的增加、删除、遍历操作
- vue 插槽 有名插槽
- Redis安装+启动报错
- 详解Guitar Pro的自动化编辑器之节拍自动化
- springboot-redis读取配置文件
- 【疑问】互联网公募基金的销售是繁荣,还是乱象?
- Swift 5 用TableView实现动态Excel表格Spreadsheet
- python百度文库文字提取_百度文库文字爬取
- 案例推荐《微博:随时随地迎战大流量》
- php excel 高度,PHPExcel,自动调整行高
- 信息收集--关联信息及漏洞情报
- linux系统 插优盘安装xvidcap,Linux屏幕录像软件xvidcap的安装方法
- 谈谈网络工程师的就业方向与薪资水平
热门文章
- 千元机自拍新体验,vivo Z3是你会拍照的“男朋友”
- 三角形外接圆与内切圆
- springboot项目日志记录访问客户端ip地址
- 如何更聪明地学习:20种让你更高效学习的科学方法
- 浙大远程教育计算机小抄,一张A4纸能写多少个字?看完浙大考生的“小抄”,网友:稳过!...
- 几何分布及其期望计算
- 【单片机】msp430几种不同开发平台的对比
- Facebook 前端技术栈重构分享
- Android流星雨效果---史上最炫,浪漫,值得陪你女朋友一起看~ [捂脸]
- php百度优化,百度技术沙龙第 24 期 PHP 性能优化实践