【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命令详解
最新文章
- java 旧url 处理的解决方法
- 新型编译器将原生代码转换为JavaScript
- 玩转Docker之安装篇(二)
- python requests 配置超时及重试次数
- Struts2 - 传值
- 深入理解ThreadLocal(转)(2015年06月11日)
- VS2010打开VS2012解决方法
- [转载]mysql慢日志文件分析处理
- Java-判断一个数是不是素数
- 将传统项目改造为SSM框架的项目
- IntelliJ IDEA创建java项目
- C++重载输入流复习
- phpstorm:如何设置代码自动换行
- Install sublime text for elementary os
- Git push提交时报错Permission denied(publickey)...Please make sure you have the correct access rights and the repository exists.
- codeforces 982C Cut 'em all!
- SonarQube代码质量管理工具安装与使用(sonarqube5.1.2 + sonar-runner-dist-2.4 + MySQL5.x)
- 从0开始学golang--2.1--如何去爬园子的数据
- GATT scan的流程
- PASSWORD MySQL 5.6.21-1ubuntu14.04_amd64