10 sed命令的基本用法
grep灵活的关联正则表达式实现文件过滤,而sed是一个数据流的编辑器,或者说是一个行编辑器,它将文件一行一行的数据放入到内存中进行编辑,而awk是一个报告生成器,这个我们以后再说;
之前我们介绍过grep与正则表达式,这一节我们详细介绍sed的用法
sed的基本用法
sed Stream EDitor 流编辑器,也叫做行编辑器;它是一个字处理器工具【与字处理工具相对应的就是文本编辑器,类似于nona或者vi vim(他们都是文本编辑器,或者说是全屏编辑器)】
sed并不是直接去处理文件本身,而是将每一行的数据读取到内存中区,再在内存中进行处理,并显示在屏幕上。而内存提供出来处理这个数据的空间我们叫做模式空间。
需要注意的是,sed命令默认不编辑源文件,仅对模式空间中的数据进行修改和处理,然后处理结束后,将模式空间中处理好的数据显示在屏幕上。
sed命令的用法
sed [option] ... {script-only-if-no-orther-script} [input-file]
这里的script-only-if-no-orther-script可以理解为sed命令自己的语言,它有自己独立的语法结构;
sed [option] 'AddressCommand' file ...
option 选项类型
-n 静态模式,不再默认显示模式空间中的内容
-i 直接修改原文件(这种做法很危险)
-e -e Script 表示可以同时执行多个脚本
-f /path/to/sed_script 将脚本文件写在其他脚本中,这样就需要通过-f来调用这个脚本文件
-r 表示可以使用扩展的正则表达式
Address 表示需要处理的对象的行或者地址
1、startline,endline
1,100 #表示处理第一行到第一百行;
$ 表示处理最后一行;
$-1 表示处理倒数第二行;
2、也可以指定模式,使用正则表达式 /RegExp/ (例如:/^root/ 表示匹配以root开头的字符)
3、也可以指定模式:/pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间所有的行都会被匹配到。
4、linenumber
精确指定某行进行匹配
5、StartLine,+N
从指定的行开始,到后面的N行,都会被匹配上,总共N+1行;
Command 指定sed选出来后的行为
d 表示删除符合条件的行
sed '1,2d' /etc/fstab
sed '3,$-1d' /etc/fstab
sed '/oot/d' /etc/fstab #删除包含有“oot”字符串的行
sed '1,+2d' /etc/fstab
sed '1d' /etc/fstab
p 表示显示(打印)符合条件的行
sed '/^\//p' /etc/fstab #打印以 / 开头的行,其中 \ 表示转意符
sed -n '/^\//p' /etc/fstab #-n表示不再默认显示模式空间中的内容
a 在匹配到的行后面增添新的内容
a “\string” 这样写表示后面再新增string内容;
sed '/^\//a \hello world' /etc/fstab
sed '/^\//a \hello world\n#hello,linux' /etc/fstab #其中\n表示换行符号
i 在指定的前面添加新的内容,内容为string
sed '/^\//i \hello world ' /etc/fstab
r filename 将指定的文件内容添加到符合条件的行处
sed '2r /etc/issue' /etc/fstab #在第二行的地方将文件/etc/issue的内容添加进来
sed '1,2r /etc/issue' /etc/fstab
w filename 将指定范围的内容另存为一个指定的文件
sed '/oot/w /tmp/oot.txt' /etc/fstab #将包含“oot”字符串的行从新保存至/tmp/oot.txt文件中去
s 查找并替换相关的内容
s/pattern/sting/ 将pattern匹配到的内容替换为后者string的内容,而pattern是支持正则表达式的;
默认情况下,s命令只替换每行中第一次被pattern匹配到的字符串,如果想要将所有匹配到的字符串均进行替换,就需要再最后面加上:g 全局替换参数,i 忽略字符大小写参数;
【s命令的分隔符可以使用 / ,同时,也可以换成其他的符号,例如:s@pattern@string@、s#pattern#string#】
sed 's/oot/OOT/' /etc/fstab
sed 's/^\//#/' /etc/fstab
sed 's@/@#@' /etc/fstab
sed 's/l/L/g' /etc/fstab
sed语句的后向引用
& 用来匹配前面pattern关联的整个字符串;
sed 's#l..e#&r#g' sed.txt
sed 's#\(l..e\)#\1r#g' sed.txt
但是,在一些情况下必须使用后向引用,而不能使用&符来调用之前的pattern所匹配的内容
练习
10 sed命令的基本用法的更多相关文章
- linux sed命令参数及用法详解
linux sed命令参数及用法详解 http://blog.csdn.net/namecyf/article/details/7336308 1. Sed简介 sed 是一种在线编辑器,它一次处理一 ...
- 轻松学会文本处理工具之二 linux sed命令
sed命令的语法格式: sed的命令格式: sed [option] 'sed command'filename sed的脚本格式:sed [option] -f 'sed script'fil ...
- linux下sed命令详解
sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上 ...
- 转 linux之sed命令详解
http://jingyan.baidu.com/article/fec4bce2228f60f2618d8bb0.html sed 编辑裁剪文件命令 sed -i "s/\/db\/te ...
- sed命令基础
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space ...
- Ubuntu 14.10 下sed命令详解
简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...
- sed命令用法详解
sed命令用法 sed是一种流编辑器,它是文本处理中非常有用的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为『模式空间』(pattern space) ...
- <三剑客> 老二:sed命令用法
sed命令的用法: sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ...
- SED命令用法整理
sed '/Started/'q 匹配到Started字符串则退出sed命令 sed '/Started/{/in/q}' 同时匹配到Started和in两个字符时则退出sed命令 ------- ...
随机推荐
- HTTP redirect 重定向到 HTTPS
最近帮一个顾客做网站, 需要HTTPS. 之前接触的SSL certificate直接上传到plesk 上面勾选重定向即可. 在此先吐槽下godaddy 服务贵功能还少. 用代码从HTTP来重定向到 ...
- RedHat6.5安装zookeeper集群
版本号: Redhat6.5 zookeeper-3.4.6 JDK1.8 zookeeper下载 官网下载地址:https://mirrors.tuna.tsinghua.edu.cn/apac ...
- Spring Cloud(Dalston.SR5)--Ribbon 中间层负载均衡
Spring Cloud 集成了 Ribbon 并结合 Eureka 可以实现客户端的负载均衡,使用 @LoadBalanced 修饰的 RestTemplate 类拥有了负载均衡功能,在 Sprin ...
- 编译小米mini openwrt
编译小米mini openwrt 1.下载openwrt源码包:进入要下载保存的文件目录,输入 git clone git://git.openwrt.org/15.05/openwrt.git 2. ...
- ByteType字符串中判断是否英文
ByteType('123你好吗',1)=mbSingleByte//单字节ByteType('123你好吗',4)=mbLeadByte//双字节字符的第一个字符ByteType('123你好吗', ...
- 黄聪:保持web页面生成的app一直处于用户登录状态不退出
用户登录了会员中心,怎么保持登录状态! 由于封壳的内核及组件肯定没有浏览器APP应用那么强大,所以目前暂时的解决方案是: jquery.cookie.js 本文转载至:https://www.cnb ...
- fiddler无法与手机连接是什么原因
1.首先要确保手机和安装有Fiddler的计算机处在同一个局域网中,可以使用路由器,或者使用笔记本发送热点给手机使用.在这里本人是使用手机USB共享功能让笔记本联网的.进入cmd输入ipconfig/ ...
- [蓝桥杯]ALGO-86.算法训练_矩阵乘法
问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200). 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j ...
- SolrServer SolrRequest
SolrServer实现类 HttpSolrServer HttpSolrServer uses the Apache Commons HTTPClient to connect to solr. H ...
- servlet.xml 出现 Referenced file contains errors(http://.......)
问题描述: 打开Eclipse突然发现Web工程的servlet.xml突然报了红叉叉,错误信息如下: Referenced file contains errors (http://www.spri ...