liunx之sed命令详解
- 简介
- 使用语法
- 常用选项option可选
- 常用命令command
- 实例
- a 追加
- 追加指定单行
- 范围匹配追加
- 追加指定正则匹配行
- i 插入
- c 取代
- 取代指定单行
- 范围匹配替换
- 正则匹配替换
- s 替换
- 正则表达式后向引用
- d 删除
- 删除指定单行
- 范围匹配删除
- 正则匹配删除
- p 打印
- 范围匹配打印
- 正则匹配打印
- a 追加
简介
sed全称是:Stream EDitor,是一个很好的文件处理工具
使用语法
sed [option] 'command' file_path
常用选项option(可选)
- -i 直接修改读取的文件内容,而不是由屏幕输出。
- -f 直接将 sed 的动作写在一个文件内,
-f filename
则可以执行filename内的sed命令; - -n 使用安静(silent)模式。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来;
- -e 直接在指令列模式上进行 sed 的动作编辑;
- -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式);
常用命令command
[range]a string∶append即追加字符串string, a 的后面可以接字串string(多行字符串可以用\n分隔),而这些字串将追加到每个匹配行的下一行,range表范围,可以用数字区间(n[,m])表示,也可以用正则(/pattern/)
[range]i string∶insert即插入字符串, a 的后面可以接字串string(多行字符串可以用\n分隔),而这些字串将追加到每个匹配行的上一行,range表范围,可以用数字区间(n[,m])表示,也可以用正则(/pattern/)
[range]c string∶取代, c 的后面可以接字串(多行字符串可以用\n分隔),而这些字串将替换到匹配的行,range表范围,可以用数字区间(n[,m])表示,也可以用正则(/pattern/)
s: 替换,通常这个 s 的动作可以搭配正规表示法!例如:
1,2s/old/new/g
,将old字符串替换成new字符串[range]d∶delete即删除,删除指定范围的内容。range表范围(不指定范围表示所有内容),可以用数字区间(n[,m])表示,也可以用正则(/pattern/)
[range]p∶print即打印,打印出指定范围的资料。通常 p 会与参数 sed -n 一起运作。range表范围(不指定范围表示所有内容),可以用数字区间(n[,m])表示,也可以用正则(/pattern/)
实例:
假设有一个本地文件test.txt,文件内容如下:
[root@localhost ~]# cat test.txt
my name is kwin
my email address is kwinwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
a 追加
追加指定单行
[root@localhost ~]# sed '1a hello' test.txt
my name is kwin
hello
my email address is kwinwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
本例命令部分中的1表示第一行,同样的第二行写成2,第一行到第三行写成1,3,用 表示最后一行,比如2, 表示最后一行,比如2,表示第二行到最后一行中间所有的行(包含第二行和最后一行)。
范围匹配追加
[root@localhost ~]# sed '1,$a hello' test.txt
my name is kwin
hello
my email address is kwinwong@hotmail.com
hello
my blog is http://blog.csdn.net/kwinh
hello
Please contact me if you have any questions
hello
end
hello
本例表示在所有的行后面都加上”hello”字符串,从输出可以看到效果。同sed 'a hello' test.txt
追加指定正则匹配行
[root@localhost ~]# sed '/^my.*com$/a hello' test.txt
my name is kwin
my email address is kwinwong@hotmail.com
hello
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
本例使用正则表达式匹配行,^my.*com$
表示以my开头,以com结尾的行,则可以匹配到文件的”my email address is kwinwong@hotmail.com”这样,所以在该行后面增加了”hello字符串。
i 插入
同a追加,不同处是a是将字符串追击到在匹配的行的后一行,而i则是将字符串插入到匹配的行的前一行
c 取代
取代指定单行
取代第1行
[root@localhost ~]# sed '1c hello' test.txt
hello
my email address is kwinwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
本例命令部分中的1表示第一行,同样的第二行写成2,第一行到第三行写成1,3,用 表示最后一行,比如2, 表示最后一行,比如2,表示第二行到最后一行中间所有的行(包含第二行和最后一行)。
范围匹配替换
替换1到2行
[root@localhost ~]# sed '1,2c hello everyone' test.txt
hello everyone
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
正则匹配替换
[root@localhost ~]# sed '/^my.*com$/c hello everyone' test.txt
my name is kwin
hello everyone
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
s 替换
1,2表示范围(默认所有行1,$),本例将文件中的所有kwin替换成kwinwong,最后的g是global的意思,也就是全局替换,如果不加g,则只会替换范围行内的每一行的第一个kwin。
[root@localhost ~]# sed '1,2s/kwin/kwinwong/g' test.txt
my name is kwinwong
my email address is kwinwongwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
正则表达式后向引用
sed命令中使用()包裹的内容表示正则表达式的第n部分,序号从1开始计算,所以\1就是kwin
[root@localhost ~]# sed 's/\(kwin\)/\1wong/g' test.txt
my name is kwinwong
my email address is kwinwongwong@hotmail.com
my blog is http://blog.csdn.net/kwinwongh
Please contact me if you have any questions
end
d 删除
删除指定单行
删除第1行
[root@localhost ~]# sed '1d hello' test.txt
my email address is kwinwong@hotmail.com
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
本例命令部分中的1表示第一行,同样的第二行写成2,第一行到第三行写成1,3,用 表示最后一行,比如2, 表示最后一行,比如2,表示第二行到最后一行中间所有的行(包含第二行和最后一行)。
范围匹配删除
删除1到2行
[root@localhost ~]# sed '1,2d hello' test.txt
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
正则匹配删除
[root@localhost ~]# sed '/^my.*com$/d' test.txt
my name is kwin
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
p 打印
本例在屏幕上打印第三行到最后一行的内容,p命令一般和-n选项一起使用。
范围匹配打印
[root@localhost ~]# sed '3,$p' test.txt -n
my blog is http://blog.csdn.net/kwinh
Please contact me if you have any questions
end
正则匹配打印
[root@localhost ~]# sed -n '/^my.*com$/p' test.txt
my email address is kwinwongwong@hotmail.com
liunx之sed命令详解相关推荐
- linux sed p变量,Linux sed 命令详解系列教程之各种问题解决
本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...
- 【转】【Linux】sed命令详解
sed命令详解 sed是stream editor的简称,也就是流编辑器.它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space ...
- cut\grep\awk\sed命令详解
cut\grep\awk\sed命令详解 1.cut命令详解及实例 (1)作用:提取文件中指定的列 语法格式:cut 选项 文件名 (2)选项作用: -d 分隔符 按照指定的 ...
- LInux sed命令详解
文章转自:http://qifuguang.me/2015/09/21/sed%E5%91%BD%E4%BB%A4%E8%AF%A6%E8%A7%A3/#comments sed命令详解 sed是st ...
- linux 之sed命令详解
sed命令详解 sed是什么 sed是linux文本处理三剑客之一,全称 StreamEDitor,非常著名的行编辑器,功能十分强大. sed的工作过程 sed处理文本时每次从文件复制出来一行,放在工 ...
- ubuntu下sed命令详解 - Dicky - 开源中国社区
ubuntu下sed命令详解 - Dicky - 开源中国社区 ubuntu下sed命令详解 - Dicky - 开源中国社区 ubuntu下sed命令详解 7人收藏此文章, 我要收藏 发表于 ...
- linux sed.写文件,Linux文件处理sed命令-linux sed命令详解-linux sed写入文件-嗨客网
Linux文件处理sed命令详解教程 Linux sed命令使用 Linux sed 命令处理时,把当前处理的行存储在临时缓冲区中,称为 "模式空间"( oattern space ...
- Linux的sed命令详解大全
Linux的sed命令详解大全 一.sed命令介绍 二.sed 的运行模式 三.sed的相关选项 四.sed基本用法 1.sed语法 2.sed的查看功能 ①查看passwd文件的第5到第8行内容 ② ...
- 【Linux篇】sed命令详解
文章目录 sed命令详解 一.基本语法 二.实操案例 内部命令选项说明 命令选项说明 标志 三.sed小技巧 sed命令详解 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时 ...
最新文章
- Java I/O Demo
- 软工作业3—词频统计
- 【Docker】记一次docker container ping domain 和 ping ipv6地址不通问题
- cdh 添加jar包_使用maven下载cdh版本的大数据jar包
- mysql 6.2使用_2. MYSQL基本使用(2)
- 树-当前结点与列表页不符的处理
- 设计模式:模板方法模式(Template Method)
- 为什么要在Java的Serializable类中使用SerialVersionUID
- 将Jersey与Spring整合
- Unity3D:Graphics.BlitMultiTap方法
- 西安电子科技大学07级计算机学院本科生毕业照.,关于对我校2015届本科“优秀毕业生标兵”、“优秀毕业生”和“优秀学生干部”评选结果进行公示的公告...
- 温度补偿计算公式_基于温度压力补偿计算的燃气表计量方法与流程
- AtCoder Beginner Contest 175 A Rainy Season 字符串+5种情况
- Kafka Consumer 消费逻辑
- 028 《数据分析师养成宝典》读书笔记
- 08 网上爬取的数据如何制作成表
- Postman|网页调试工具
- w7点击计算机图标没反应,点击win7系统桌面上的图标没有反应怎么办?
- centos7中英文切换
- CISSP资料:独家笔记
热门文章
- python pta实验八
- 从cocostudio获取控件,添加回调函数
- Android SDK Windows 安装及环境配置教程
- java 基础面试练习题(易错题)
- Java中的IO、NIO、File、BIO、AIO详解
- 【文献解读 情感合成】Expressive Speech Driven Talking Avatar Synthesis with DBLSTM using 有限的情感双峰数据
- Arduino CapacitiveSensor 电容式触摸传感器
- Java基础-常见IO五种模型
- 特征空间之点检测(MATLAB)
- VBA之正则表达式(1)-- 基础篇