linux环境sed命令实例学习
命令简介:
sed(Stream Editor)被称作流编辑器。linux命令环境的“三剑客”(grep,sed,awk)之一,功能强大,可以根据命令来处理数据流中的数据,命令可以在命令行中,也可以出现在一个文本文件中。
sed一般会执行下列操作:
①一次从输入中读取一行数据;
②根据所提供的编辑器命令匹配数据;
③按照命令修改流中的数据;
④将新的数据输出到STDOUT(屏幕上);
在流编辑器将所有命令与一行数据匹配完毕后,它会读取下一行数据并重复这个过程。在流编辑器处理完流中的所有数据行后,它就会终止。
必备知识:
正则表达式
速记参考:http://man.linuxde.net/docs/shell_regex.html
测试环境:
CentOS 7.x
具体实例:
说明:以下例子来自网络整理,可能某些问题用sed并非简便,此处拿来仅供学习,实际匹配操作根据不同文本文件环境做轻微调整,主要涉及到了常见的实用操作(打印、删除、替换、交换、提取等)。
打印
1. 打印第一行
~]# sed -n '1p' passwd
2. 打印最后一行
~]# sed -n '$p' passwd
3. 打印第三行
~]# sed -n '3p' passwd
4. 打印第三行到第八行
~]# sed -n '3,8p' passwd
5. 打印第三行和第5行
~]# sed -n '3p;5p' passwd
6. 打印第三行和第五号到第八行
~]# sed -n '3p;5,8p' passwd
7. 打印奇数行
~]# sed -n 'p;n' passwd
8. 打印偶数行
~]# sed -n 'n;p' passwd
9. 打印每行3次
~]# sed 'p;p' passwd
~]# sed -n 'p;p;p' passwd
10. 打印以mail开始的行
~]# sed -n '/^mail/p' passwd
删除(一般删除)
1. 删除空白行(打印非空行)
~]# sed '/^$/d' passwd
~]# grep -v "^$" passwd
~]# awk '{if($0!="") print}' passwd
~]# awk '{if(length!=0) print}' passwd
~]# cat passwd |tr -s '\n'
2. 删除第二行
~]# sed '2d' passwd
3. 删除第二行到第五行
~]# sed '2,5d' passwd
4. 删除第二行和第五行到第八行
~]# sed '2d;5,8d' passwd
5. 删除最后一行
~]# sed '$d' passwd
6. 删除奇数行
~]# sed '1d;n;d' passwd
~]# sed '1~2d' passwd
7. 删除偶数行
~]# sed '2d;n;d' passwd
~]# sed '2~2d' passwd
删除(替换思想)
1. 删除每行开头的所有空格
~]# sed 's/^ *//' passwd
~]# sed 's/^\ *//' passwd
~]# sed -r 's/( *)(.*)/\2/' passwd
2. 删除每行第一个字符
~]# sed 's/.//' passwd
~]# sed 's/^.//g' passwd
~]# sed -r 's/(.)(.*)/\2/' passwd
3. 删除每行最后一个字符
~]# sed 's/.$//' passwd
~]# sed -r 's/(.*)(.)/\1/' passwd
4. 删除每行第四个字符
~]# sed 's/.//4' passwd
5. 删除每行倒数第二个字符
~]# sed -r 's/(.*)(.)(.)/\1\3/' passwd
6. 删除所有的数字
~]# sed -r 's/[0-9]*//g' passwd
~]# sed -r 's/[0-9]//g' passwd
7. 删除每行第二个单词
~]# sed -r 's/([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)(.*)/\1\2\4\5/' passwd
~]# sed -r 's/([^a-Z]*)([a-Z]+)([^a-Z]+)([a-Z]+)(.*)/\1\2\3\5/' passwd
~]# sed -r 's/(^[^a-Z]*)([a-Z]+)([^a-Z]+)([a-Z]+)/\1\2\3/' passwd
8. 删除每行倒数第二个单词
~]# sed -r 's/(.*)([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]*)/\1\2\4\5\6/' passwd
~]# sed -r 's/([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]*)$/\1\3\4\5/' passwd
9. 删除每行最后一个单词
~]# sed -r 's/(.*)([^a-Z]+)([a-Z]+)/\1\2/' passwd
~]# sed -r 's/(.*)([^a-Z]+)([a-Z]+)([^a-Z]*)/\1\2\4/' passwd
替换
1. 用制表符替换文件中出现的所有空格
~]# sed -r 's/ /\t/g' passwd
2. 把所有小写字母用括号()括起来
~]# sed 's/[a-z]/(&)/g' passwd //用&代表前面匹配到的字母
3. 将格式 2018/12/31 换成 2018-12-31
~]# echo "2018/12/31" | sed 's#/#-#g'
4. 将文件中所有的root单词替换成大写的ROOT
~]# sed 's/\<root\>/ROOT/g' passwd
交换(替换思想)
1. 交换每行的第一个字符和第二个单词
~]# sed -r 's/^(.)([^a-Z]*)([a-Z]+)([^a-Z]+)([a-Z]+)/\5\2\3\4\1/' /etc/passwd
2. 交换每行的第一个单词和最后一个单词
~]# sed -r 's/([^a-Z]*)([a-Z]+)([^a-Z]+)(.*)([^a-Z]+)([a-Z]+)/\1\6\3\4\5\2/' passwd
3. 交换每行的倒数第二个单词和最后一个单词
~]# sed -r 's/([^a-Z]+)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]*)$/\1\4\3\2\5/' passwd
插入(i\,a\)
1. 在第一行上插入
~]# sed '1i\at the top' passwd
2. 在匹配行上插入
~]# sed '/^the/i\I am here' passwd
3. 在第二行下面插入
~]# sed '2a\I am here' passwd
4. 在最后一行下面插入
~]# sed '$a\at the bottom' passwd
结束.
不定时更新,如有不解,欢迎留言交流 ^_^
linux环境sed命令实例学习的更多相关文章
- linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号
linux 的sed命令解释 sed ':t;N;s/\n/,/;b t' 将换行符换成逗号 实现的功能是吧换行符换成逗号了,自己试验过. 求解释,:t N b t 都是什么意思??? :t 定义la ...
- linux中sed命令(全面解析)
目录 一:linux中sed命令介绍 1.sed作用 2.sed命令格式 3.参数 4.sed的编辑模式 5.sed参数解析用法 二:sed 参数 -f 案例实战解析 1.前介 2.引入简介 3.方法 ...
- Linux系统sed命令常用参数实战
Linux系统sed命令常用参数实战 常用参数 -n 输出某行的文本内容,通常与p联合使用, -e 命令行模式下进行sed的动作编辑,输出编辑后的内容,源文件不会发生变化 -f 以命令中指定的scri ...
- linux下sed命令对文件执行文本替换
让我们看一下 sed 最有用的命令之一,替换命令.使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换.下面是该命令最基本用法的示例: $ sed -e ‘s/foo/bar/’ myfi ...
- linux的sed命令(一)
转自:https://www.cnblogs.com/ginvip/p/6376049.html Sed 简介 sed 是一种新型的,非交互式的编辑器.它能执行与编辑器 vi 和 ex 相同的编辑任务 ...
- linux中sed命令的使用
sed命令是linux或者shell编程中常用的筛选.替换命令,如果能熟练使用sed则对经常使用的人来说在工作上是非常有帮助的 下面把sed主要的用法列出来(有错误的地方大家可以指正): p命令只打印 ...
- Linux环境SVN命令行使用经验总结(转)
在windows机器上开发得差不多了之后,打包传送到开发机编译,在开发机上解决编译错误. [缺点] 浪费时间在打包解包,机器间传输代码. 在windows机器上开发之后,check in代码进分支,在 ...
- 转 linux之sed命令详解
http://jingyan.baidu.com/article/fec4bce2228f60f2618d8bb0.html sed 编辑裁剪文件命令 sed -i "s/\/db\/te ...
- Linux shell sed命令使用
Linux处理文本文件的工具: grep 过滤文件内容 sed 编辑文件内容 awk 正则表达式Regex ...
随机推荐
- winform使用相关
1.回车键触发按钮点击事件——回车登录 设置窗体的AccessButton属性 2.密码框样式设置 设置PasswordChar为想要的密码显示的样式,如* 3.设置窗口居中 设置StartPosi ...
- Nginx三部曲(2)性能
我们会告诉你 Nginx 如何工作及其背后的理念,还有如何优化以加快应用的性能,如何安装启动和保持运行. 这个教程有三个部分: 基本概念 —— 这部分需要去了解 Nginx 的一些指令和使用场景,继承 ...
- Redis教程(Windows)
安装 1)下载redis压缩包并 , 推荐地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平 ...
- HTML中的几种空格
HTML提供了5种空格实体(space entity),它们拥有不同的宽度,非断行空格( )是常规空格的宽度,可运行于所有主流浏览器.其他几种空格( )在不同浏览器中宽度各异. ...
- thymeleaf 引入公共html注意事项
详细连接https://blog.csdn.net/u010260737/article/details/83616998 每个页面都会用到分页.html或者头部.html.尾部.html,在其他页面 ...
- django rest framework批量上传图片及导入字段
一.项目需求 批量上传图片,然后批量导入(使用excel)每个图片对应的属性(属性共十个,即对应十个字段,其中外键三个). 二.问题 一次可能上传成百上千张图片和对应字段,原来数据库的设计我将图片和对 ...
- thinkphp视图中插入php代码
性别: <?php if($item['sex'] == 1):?> 男 <?php else:?> 女 <?php endif;?> 错误:<?php ec ...
- oracle逗号分隔函数
SELECT wm_concat(GZTYPE) str FROM TB_FDN_WORKKIND
- endnote插入文献时出现{,#}这样的乱码
1)在每次插入文献后,再点击一下Bibliography里面的Update Citation and Bibliography即可: (2)较好的解决方法也较为简单,只需要再一次进入Word中的End ...
- System.Diagnostics.Process启动Civil 3D及AutoCAD
QQ群友提出问题, 如何启动Civil 3D或者AutoCAD, Kean的博客里有相关的文章 http://through-the-interface.typepad.com/through_the ...