Linux文本三剑客-sed
sed工作原理:
sed: Stream Editor。流编辑器 --- 属于行编辑工具
sed和vim一样都是文本编辑工具。
行编辑工具:一行一行处理文件内容
全屏编辑工具:一次性将文件内容加载到内存
sed工作流程:
sed工作逻辑:逐行处理内容
一次读取一行内容到模式空间(内存空间)进行处理。这个处理过程可以是输出,也可以是更改文件内容再写入文件等。由此反复处理,直到最后一行处理完成。
sed基本用法:
sed可以显示文件内容也可以修改文件内容。
grep只能查看文件内容。
格式:
sed [option] 'script...script' [inputfile]
script: sed自身的脚本,sed自身语法的一种脚本。
inputfile: 文件,如果不写文件就对标准输入的内容进行处理
sed最基本的用法--自动打印:sed ''(''里面的脚本内容不能省略)
不输入脚本就是读入什么就默认打印什么 --- sed内置了自动打印的功能
选项:
-n:关闭sed的自动打印
-e:多点编辑(一次更改多个内容)
-r,-E:使用正则表达式
-i.bak 先把文件做个备份然后再改
-s:将多个文件视为单独的文件
sed的脚本格式:
位置和指令组合而成
地址格式: 处理文件的内容范围
空地址
表示对全文处理
单地址
num:指定的行,$:最后一行
例如:打印第三行的内容
显示ifconfig命令的第二行。
/pattern/:被此处模式所能够匹配到的每一行 (里面可以写正则表达式实现过滤)
例如:打印出包含root的行
地址范围
n,n:表示从n行到第m行,例如 3,6 表示从第3行到第6行 (n,+m 表示从n行到+m行,例如:3,+4 表示从3行到第7行)
/pat1/,/pat2/ (第一个正则表达式之后到下一个正则表达式中间的内容)
例如:匹配以b开头到以g开头的行的中间那些行。
找到了第一个满足条件的范围后不会停止,还会继续往下面找。
#,/pat/或/pat/,# (数字和正则表达式混着用)
步进:每次指定多少个
1~2 奇数行 --- 从第一行开始,以2行为步进(1 3 5 7 ...)
2~2 偶数行
命令:
1. p --- 内容打印
2. Ip --- 忽略大小写输出
3. d --- 把模式空间内容删除掉,不再自动打印了
4. a --- 再某些行后面加内容
5. i --- 再某些行前面加内容
6. c --- 替换某一行的内容
7. w --- file 另存为指定文件
8. r --- 把一个文件内容读到当前匹配到的行中
9. = --- 某一行前面添加行号
10. ! --- 除了某一行的意思
11. q --- 结束或退出sed
例如:删除偶数行,显示奇数行。
并不会真正删除文件内容,只是显示了一下。
搜索替代(sed的核心用法)
格式:
s/pattern/string/修饰符 --- 支持使用其它分隔符,可以是其它形式:s@@@,s###
替换修饰符:
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
I,i 忽略大小写
&符号:表示搜索出来的内容。 相当于一个变量,保存搜索出来的内容
正则表达式分组:小括号实现分组,后面要表示第几个分组的内容就用 \num
--- 实现把一个文件的一行切成多块,保留其中之一。
比如:把r..t替换成r..ter,前面是root则&代表的就是root。
例如:值显示主机的ip地址
范例:是用sed实现批量修改网卡名称
sed高级用法:
保持空间:将模式空间的数据临时保存到这儿。
高级命令:
x 把模式空间中的内容与保持空间中的内容进行互换(数据互换)
H 把模式空间中的内容追加至保持空间中(内容追加)
n 读取匹配到的行的下一行覆盖至模式空间(下一行覆盖到模式空间)
N 读取匹配到的行的下一行追加至模式空间(下一行追加到模式空间)
d 删除模式空间中的行
范例:
最新文章
- CGI与FastCGI
- 做JavaWeb开发不知Java集合类不如归家种地
- CSS padding margin border属性详解
- tiny4412学习一:编译uboot,体验裸机
- 新手开发android容易出现的错误(不断更新中...)
- IOS searchBar去掉背景
- objective-c数组笔记
- thinkphp测试方法
- 最近提交并被合并的 jDiameter pull request 31 解决的问题
- tomcat 详解
- chrome浏览器设置小于12号的字体不起作用?
- iOS 开发--动画
- mybatis + log4j 打印mybatis的sql
- git阶段学习总结
- structure and interpretation of Computer programs -- Foreword
- ImageView.ScaleType设置图解
- WP8.1程序开发中,如何加载本地文件资源或安装在程序包中的资源。
- 【.net 深呼吸】通过标准输入/输出流来完成进程间通信
- Struts2配置问题终极解决方案
- 【JS基础】类型转换——不同数据类型比较
热门文章
- Vue快速入门(一)
- css加载动画(纯css和html)
- 得到一个a(10)到b(20)的随机数。包括10和20
- Java语言学习day21--7月27日
- python基础练习题(题目 计算两个矩阵相加)
- python基础练习题(题目 打印出所有的";水仙花数";,所谓";水仙花数";是指一个三位数,其各位数字立方和等于该数本身)
- 复习 - node.js(接口案例)
- 如何改变函数内部 this 的指向
- 深度长文:深入理解Ceph存储架构
- Linux启动故障排查和修复技巧