【OS_Linux】三大文本处理工具之sed命令
1、sed命令的简介及用法
sed:即为流编辑器,“stream editor”的缩写。他先将源文件读取到临时缓存区(也叫模式空间)中,再对满足匹配条件的各行执行sed命令。sed命令只针对缓存区中的副本进行,不会修改或破坏源文件。默认情况下,屏幕上既会打印各行的原始内容又会打印处理后的结果。
如图 1: sed 处理过程

sed语法:sed [选项] 匹配条件及编辑命令 输入文本(文件)
选项:
-n∶使用安静(silent)模式,只打印被sed命令处理过的结果行,不打印未被sed命令处理的行。
-e∶对模式空间中的各行执行多重编辑,编辑命令的顺序将影响结果。
-f∶用一个sed脚本对输入进行编辑, -f filename指定sed脚本的文件名。
-r∶编辑条件中使用扩展的正则表达式
-i∶直接修改源文件,而不在屏幕上输出
匹配条件:
1、采用正则表达式进行匹配(包括字符匹配、次数匹配、位置匹配)
2、行号匹配 (行号从1开始)
beginNumber~step:从行号为beginNumber开始,每隔step步长处理一次。例如: sed
-n 2~5p 含义:从第二行开始匹配,隔 5 行匹配一次,即 2,7,12.......。
beginNumber, +N:从 beginNumber这行到往下 N 行匹配,总共匹配 N+1 行。
beginNumber, ~N:从addr1行开始,直到行号为N的整数倍时结束。
beginNumber, endNumber:行号为beginNumber到endNumber之间的行。
编辑命令:
| 命 令 | 说 明 |
| i | 在当前行之前插入一行 |
| a | 在当前行之后追加一行 |
| c | 用新文本覆盖(cover)当前行 |
| d | 删除匹配的行 |
| g | 默认只修改各行中首次匹配成功的位置,该参数意为整行搜索和替换 |
| p | 打印匹配的行 |
| q | 结束或退出 sed命令 |
| ! | 反向匹配,即对未匹配成功的行执行sed命令 |
| s | 用一个字符串替换另一个字符串 |
案例:
输入文件为ceshi.txt

选项-n的作用:
默认情况下会将未被sed命令处理的行也打印出来

有了选项-n后只打印经sed命令处理的行

删除命令d:删除从第三行到最后一行内容

修改命令s:在以两位数字结尾的行后面追加.5,符号“&”表示取匹配模式。


行追加命令a:

多个sed命令组成的通道:前一个sed命令的输出作为下一个sed命令的输入
amosli@amosli-pc:~/learn/sed$ cat test.txt
hi,this is sed command test file
linux world is so amazing you will LOVE it!
amosli@amosli-pc:~/learn/sed$ cat test.txt | sed 's/linux/LINUX/' | sed 's/sed/SED/'
hi,this is SED command test file
LINUX world is so amazing you will LOVE it!
2、用sed命令直接编辑源文件
法一:通过选项-i直接编辑源文件,而不是在屏幕上输出

法二:先将sed处理的结果重定向到另外一个零时文件,再覆盖源文件

本博文参考了:linux命令总结sed命令详解 linux shell 脚本攻略学习19--sed命令详解
【OS_Linux】三大文本处理工具之sed命令的更多相关文章
- 【OS_Linux】三大文本处理工具之grep命令
grep(global search regular expression(RE) and print out the line,整行搜索并打印匹配成功的行 语法:grep [选项] 搜索词 ...
- 文本处理三剑客之sed命令
第十八章.文本处理三剑客之sed命令 目录 sed介绍 sed命令常用选项 sed常用编辑命令 sed使用示例 sed高级语法 18.1.sed简介 sed全名stream editor,流编辑器,s ...
- 三大文本处理工具grep、sed及awk的简单介绍
grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...
- shell之三大文本处理工具grep、sed及awk
grep.sed和awk都是文本处理工具,虽然都是文本处理工具单却都有各自的优缺点,一种文本处理命令是不能被另一个完全替换的,否则也不会出现三个文本处理命令了.只不过,相比较而言,sed和awk功能更 ...
- 三大文本处理工具grep、sed及awk
一. 用grep在文件中搜索文本 grep能够接受正则表达式,生成各种格式的输出.除此之外,它还有大量有趣的选项. 1. 搜索包含特定模式的文本行: 2. 从stdin中读取: 3. 单个g ...
- 【Linux】 字符串和文本处理工具 grep & sed & awk
Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...
- awk、sed、grep三大shell文本处理工具之sed的应用
sed 流编辑器 对文本中的行,逐行处理 非交互式的编辑器 是一个编辑器 1.工作流程 1)将文件的第一行读入到自己的缓存空间(模式空间--pattern space),删除掉换行符 2)匹配,看一下 ...
- 文本处理三剑客之 Sed ——一般编辑命令
sed简介 sed (stream editor for filtering and transforming text) 是Linux上的文本处理三剑客之一,另外两个是grep和awk. sed又称 ...
- linux下sed命令笔记
sed 流编辑器 Stream EDitor三大文本处理工具:grep,sed,awk 语法:sed 'AddressCommand' file ...Address: 1,StartLine, ...
随机推荐
- java 程序从linux 上接收不可见字符
近期在写一个简单的小java程序,希望在运行java 程序时,从shell 中接收参数,并且参数的内容为不可见字符. 开始时还觉得可以使用"\"之类的转义符来写,后来发现java程 ...
- 最长上升序列(Lis)
Description A numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subsequence ...
- Jasper_crosstab_measure_display a value of field in crosstab total row
1.create a measure <measure name="myField" class="java.lang.String"> <m ...
- 《深入理解java虚拟机》笔记(1)运行时数据区域
1.Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来. 2.运行时数据区域划分 java虚拟机在执行java程序的过程中会把它所管理的内存划 ...
- split()分割字符串用法
<script type="text/javascript"> var str="How are you doing today?" documen ...
- MD5加密的方法
#region MD5加密 /// <summary> /// MD5加密 /// </summary> /// <param name="strPwd&quo ...
- VS2015 VB.Net利用QrCodeNet生成QR Code
Step by step Create QR Code with QrCodeNet Step.1 新建項目 Step.2 下載QrCodeNet代碼,解壓\QrCodeNet\sourceCode\ ...
- IOS之UIAlertController
你知道 UIAlertView.UIActionSheet (以及它们各自的 delegate protocols) 在 iOS 8 中已经被废弃了吗? 这是真的.在你的代码中按住 ⌘ 点击 UIAl ...
- SQL 数学串函数
数学函数 ceiling 取上限 floor 取下限 round 四舍五入 len 长度 abs 绝对值 PI()圆周率 sqrt 开根号 qwuare 平方根 select 10 ...
- LINUX提高openfire并发数(网上收集)
谷歌博客地址:http://tsaiquinn.blogspot.com/2014/10/linuxopenfire.html 影响连接数的元素包含三种:1)Linux的系统参数2)进程自身可以创建的 ...