Linux Sed命令具体解释+怎样替换换行符quot;\nquot;(非常多面试问道)
Sed是一个强大的文本处理工具
能够採用正则匹配。对文本进行插入删除改动等操作
Sed处理的时候,一次处理一行,每一次把当前处理的存放在暂时缓冲区。处理完后输出缓冲区内容到屏幕,然后把下一行读入缓冲区,如此反复,直到结尾。
1、命令格式和參数
sed [-nefr] [动作] 文件
參数:
-n 安静模式。在sed处理的时候。全部来自STDIN的数据都会被输出到终端。加上-n会仅仅输出处理的哪行
-e 直接在命令列上进行sed动作编辑
-f 直接将sed的动作写在文件内
-r sed动作支持延伸的正则表达(默认仅仅是基础正则)
-i 直接改动文件内容(慎用,尤其是用系统文件做练习的时候)
动作:
a append:添加。在当前行的下一行添加
c :代替,代替n1到n2之间的行
d delete:删除
i 插入,眼下行的上一行插入
p 打印。经常与-n使用
s 代替,s/old/new/g
2、基础使用方法具体解释
(1)第一行之后加入一行
[root@localhost ~]# nl file.txt | sed "1a add text"1 wtmp begins Mon Feb 24 14:26:08 2014
add text2 192.168.0.13 162.12.0.1234 this is the last line
(2)第一行之前加入一行
[root@localhost ~]# nl file.txt | sed "1i add text"
add text1 wtmp begins Mon Feb 24 14:26:08 20142 192.168.0.13 162.12.0.1234 this is the last line
(3)删除第2,3行
[root@localhost ~]# nl file.txt | sed "2,3d"1 wtmp begins Mon Feb 24 14:26:08 20144 this is the last line
(4)打印第2,3行
[root@localhost ~]# sed -n "2,3p" file.txt
192.168.0.1
162.12.0.123
这里要提到的是,尽量使用-n。不然会出现这种结果
[root@localhost ~]# sed "2,3p" file.txt
wtmp begins Mon Feb 24 14:26:08 2014
192.168.0.1
192.168.0.1
162.12.0.123
162.12.0.123
this is the last line
(5)把168换成169
先看源文件
[root@localhost ~]# cat file.txt
wtmp begins Mon Feb 24 14:26:08 2014
192.168.0.1
162.12.0.123
this is the last line
处理后
[root@localhost ~]# sed "s/168/169/g" file.txt
wtmp begins Mon Feb 24 14:26:08 2014
192.169.0.1
162.12.0.123
this is the last line
(6)插入多行
[root@localhost ~]# nl file.txt | sed "2afirst\nsecond" file.txt
wtmp begins Mon Feb 24 14:26:08 2014
192.168.0.1
first
second
162.12.0.123
this is the last line
(7)匹配数据,然后进行操作
仅仅须要在上述的基础上加上正则匹配
sed "/匹配的模式/处理的方式" file.txt
sed "/^root/d" file.txt 对開始有root的删除
比如
匹配begin,并删除改行
[root@localhost ~]# nl file.txt | sed "/begin/d"2 192.168.0.13 162.12.0.1234 this is the last line
匹配123,而且把含有123的行162都替换成172
[root@localhost ~]# nl file.txt | sed "/123/{s/162/172/g;q}"1 wtmp begins Mon Feb 24 14:26:08 20142 192.168.0.13 172.12.0.1234 this is the last line
这里大括号{}里能够运行多个命令,用;隔开就可以,q是退出
(8)连续编辑 -e
删除第二行,而且匹配把last替换成new
<pre name="code" class="plain">[root@localhost ~]# nl file.txt | sed -e "2d" -e "s/last/new/"1 wtmp begins Mon Feb 24 14:26:08 20143 162.12.0.1234 this is the new line
(9)直接改动文件,切记不要改动系统文件
[root@localhost ~]# sed -i "/begin/{s/24/25/g}" file.txt
[root@localhost ~]# cat file.txt
wtmp begins Mon Feb 25 14:26:08 2014
192.168.0.1
162.12.0.123
this is the last line
三 、一个比較有趣的样例
怎样替换\n也就是把全部的行都归为一行
第一种方式
[root@localhost ~]# sed ':a;N;$!ba;s/\n/ /g' file.txt
wtmp begins Mon Feb 25 14:26:08 2014 192.168.0.1 162.12.0.123 this is the last line
另外一种方式
[root@localhost ~]# tr "\n" " " < file.txt
wtmp begins Mon Feb 25 14:26:08 2014 192.168.0.1 162.12.0.123 this is the last line last linen
转载于:https://www.cnblogs.com/yutingliuyl/p/6784447.html
Linux Sed命令具体解释+怎样替换换行符quot;\nquot;(非常多面试问道)相关推荐
- linux替换换行符 n r,Linux Sed命令详解+如何替换换行符\n(很多面试问道)
Sed Sed是一个强大的文本处理工具 可以采用正则匹配,对文本进行插入删除修改等操作 Sed处理的时候,一次处理一行,每一次把当前处理的存放在临时缓冲区,处理完后输出缓冲区内容到屏幕,然后把下一行读 ...
- 【Shell】 sed/tr替换换行符
$ cat test.txt 5 2 1 sed命令 cat test.txt | sed ':label;N;s/\n/ /;b label' tr命令 ★ ★ ★ cat test.txt | t ...
- linux中sed如何替换换行符,linux sed命令,如何替换换行符“\n”
linux sed命令,如何替换换行符"\n" 在一次sed使用中,执行命令: sed "s/\n//g" file 1 发现,没起到任何效果. 后来,经查se ...
- linux sed命令,如何替换换行符“\n”
linux sed命令如何替换换行符n 实现方法 第一种方法使用test跳转命令实现替换换行符 branch和test区别 第二种方法使用bra ...
- linux sed替换大小写,sed命令介绍 及实例(替换换行符及大小写替换)
一.sed命令介绍 Table of Contents 1. Sed简介 2. 定址 3. Sed命令 4. 选项 5. 元字符集 6. 实例 7. 脚本 1. Sed简介 sed是一种在线编辑器,它 ...
- Linux下Sed命令的用法(之替换)
Linux 操作系统最大的一个好处是它带有各种各样的实用工具.存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具.可以简化关键情况下操作的一个实用 工具是 sed.它是任何管理员的工具包中最 ...
- linux sed p变量,Linux sed 命令详解系列教程之各种问题解决
本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...
- Linux sed命令高级用法精讲
<Linux sed用法详解>一节给大家介绍了如何用 sed 命令的基本功能处理文本中的数据,所涵盖的知识点,可以满足日常大多数文本编辑需求.本节将介绍 sed 提供的一些高级功能,这些功 ...
- Linux sed命令完全攻略(超级详细)
我们知道,Vim 采用的是交互式文本编辑模式,你可以用键盘命令来交互性地插入.删除或替换数据中的文本.但本节要讲的 sed 命令不同,它采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需 ...
最新文章
- python从控制台读取数据
- java基础知识之循环结构与数组
- python爬取数据案例分析_基于Python及webdriver的网页抓取案例
- android studio设置生成的release版本apk的名称
- Office文件的奥秘——.NET平台下不借助Office实现Word、Powerpoint等文件的解析(一)...
- 【转】SQL Server中行列转换 Pivot UnPivot
- SQLServer数据库,表内存,实例名分析SQL语句
- 作为程序员,北漂的我有很多话想说。
- Flink : The object probably contains or references non-serializable fields.
- GUN/LINUX的文件类型
- Mysql表设计需要注意的问题
- yagmail发送附件
- STEAM 正在检查可用更新 ,失败
- CodeIgniter session过期时间问题
- error: Apostrophe not preceded by \ (in XXX.)
- Java实现 蓝桥杯VIP 算法提高 研究兔子的土豪
- [NameError]: name ‘F’ is not defined
- Oracle取小数点部分
- Jenkins连接AWS-EKS
- ChatGPT 推出 iOS 应用,支持语音输入,使用体验如何?
热门文章
- 一张心酸得不想起名字的照片,人艰就别拆了好吗 | 每日趣闻
- 程序员饭碗不保了?GPT-3 最强应用发布,动动手指就自动写代码的神器来了!...
- 中兴同美司法部和解协议获准:罚12亿美元
- 【鲁班学院】一个三年工作经验和月薪16k的java程序员应该要具备什么样的技能?...
- 浅谈k8s cni 插件
- Java SE 9(JDK9)环境安装及交互式编程环境Jshell使用示例
- 平时一些mysql小技巧及常识
- eclipse插件之easyshell
- javascript客户端检测技术
- 页面切换语言包使用session不用cookie