sed & awk (2) 基础-sed 简介
来源:互联网 发布:dtmb软件下载 编辑:程序博客网 时间:2024/06/05 07:32
sed 与ed的区别:
1.sed基于字符流,ed是行编辑器;
2.sed非交互,ed是可以交互的编辑器;
Topic 1,sed脚本的多个命令是怎么作用于文件的?
文件
pig cow
pig
cow
cow pig
脚本
sed -e 's/pig/cow/g' -e 's/cow/horse/g'
输出:
horse horse
horse
horse
horse horse
脚本:
sed -e 's/cow/horse/g' -e 's/pig/cow/g'
输出
cow horse
cow
horse
horse cow
----
小伙伴们看出来了么?
其实是这样的:
“模式空间”:sed脚本每次只能处理文件的一行,首先拷贝这一行的副本,然后依次将所有命令作用这个副本(作用依次副本更新一次),
之后将副本输出到标准输出流。
那么上面两个脚本的顺序不同,结果也不同,前者先把pig换成cow,接着把cow换成horse,那么所有单词都变成horse了
后者避免了顺序可能导致的逻辑问题。
Topic 2 全局透视
sed 命令默认的全局范围是文件的所有行 如ed的(g/r/s/r/x/) cf sed的(s/r/x/)
当然sed也可以手动指定范围:
sed '/cow/s/pig/cow/g' 只有包含cow的行将pig换成cow
Topic 3 全局范围
3.1 “”,“” 分割
前者代表启动动作,后者代表禁用动作
e.g
2,4/d #删除2-4行
1,/^$/d #从第一行开始,直到第一个空行(包括该空行),全部删除
Topic 4 操作分组
1,$ {
/^$/d
s/a/b/g
}
操作可以用{}括起来,进行多组操作(注意{}里面的操作是sed的操作!独立包含操作的所有元素)
注:操作前带!可以反向
一个分组操作的例子
sed '/<form/,/<\/form/!d' |\
sed -e '/<form /s/.*<form/<form/g' -e '/<\/form>/s/<\/form>.*/<\/form>/' |\
sed '/<form/,/<\/form/{
/^$/d
s/pig/cow/g
}'
第一行提取了包含<form>标签的行(一行有多个form的情况后面没考虑)
第二行清理了<form之前的字符以及</form>之后的字符
第三行是一个分组:
删除空白行
将每行所有pig换成cow
Topic 4 n p共用 cf grep
-n 是指不用默认方式将sed命令输出到标准输出流
p操作是打印(-n不会影响p的输出)
那么
sed -n '/pig/,/cow/p'
打印从pig到cow的所有行
grep可不行
- sed & awk (2) 基础-sed 简介
- sed和awk简介
- sed和awk简介
- sed和awk简介
- sed和awk简介
- Sed和Awk简介
- sed和awk简介
- 操作 sed & awk (3) 基础-sed 命令
- Awk、sed与grep简介
- sed & awk (1) 基础-ed
- sed & awk --SED 入门
- sed awk ``````
- sed&&awk
- sed&awk
- sed awk
- sed & awk
- awk && sed
- sed awk
- js控制input框只读
- OCP-1Z0-053-V13.02-232题
- 矩阵嵌套
- oracle中不同用户下的表复制 或 将一个表中的数据复制到另一个表中
- 如何缓存文件
- sed & awk (2) 基础-sed 简介
- Java设计模式(三) 装饰模式
- 几款引擎比较:BigWorld,Unreal,CryEngine等
- Extjs4循序渐进(一)—开始Ext
- PHP 数组遍历方法大全(foreach,list,each)
- struct inode、struct file和struct file_operations的宏观认识
- 清除浮动解决方案
- libvpx 库的依赖解决
- 28.C++类的多重继承——二义性