sed 学习笔记
来源:互联网 发布:手机淘宝联盟下载 编辑:程序博客网 时间:2024/06/05 02:58
声明:这些代码只是为了学习和理解sed命令而为之,并不代表问题的唯一解或最佳解,希望各位拍砖
参考资料:<sed&awk.pdf>等
一. 替换
1.神奇变换(y命令的使用)
1234567890
2345678901
3456789012
4567890123
测试
将文件中1换成A
将文件中2换成B
...
将文件中0换成J
ABCDEFGHIJ
BCDEFGHIJA
CDEFGHIJAB
DEFGHIJABC
注意变换关系是按两个list的位置对应变换,y是一个管局命令,拒绝使用后缀flag/g
list1:1234567890
list2:ABCDEFGHIJ
下面再作一个与前例相反的变换
JIHGFEDCBA
IHGFEDCBAJ
HGFEDCBAJI
GFEDCBAJIH
2.替换每行第一个匹配
sed 's/regexpr/anyword/1' filename
举例:
1234567890 2345678901
3456789012 4567890123
sed 's/5/五/' filename
1234五67890 2345678901
34五6789012 4567890123
3.替换每行第n(如果有的话)个匹配
cat filename
111111111111111111
222222222222222222
333333333333333333
444444444444444444
举例
sed "s/4/ 四 /8" filename
111111111111111111
222222222222222222
333333333333333333
4444444 四 4444444444
4.替换每行所有匹配
1234567890 2345678901
3456789012 4567890123
sed 's/3/三/g' filename
12三4567890 2三45678901
三456789012 456789012三
二.行号处理
1.为文件加行号
cat filename
111111111111111111
222222222222222222
333333333333333333
444444444444444444
举例
1:111111111111111111
2:222222222222222222
3:333333333333333333
4:444444444444444444
2.仅为文件中的正文行加行号
举例
111111111111111111
222222222222222222
333333333333333333
444444444444444444
sed /./= a|sed '/./N;s//n/:/' filename
1:111111111111111111
3:222222222222222222
4:333333333333333333
6:444444444444444444
三.字串翻转
举例
0987654321
四.选择性输出
1.打印文档奇数行(隔行输出)
sed 'x;$!N;x'
sed -n 'p;n'
1
3
5
7
2.打印偶数行(隔行输出)
sed '1d;n;d;'
2
4
6
8
3.删除连续重复行(大量使用了pattern space 文件太大时要注意)
#使用 $!N 要当心内存溢出
举例
111111111111111111
222222222222222222
222222222222222222
333333333333333333
444444444444444444
444444444444444444
444444444444444444
444444444444444444
444444444444444444
sed '$!N; /^/(.*/)/n/1$/!P; D' filename
111111111111111111
222222222222222222
333333333333333333
444444444444444444
4.合并上下行并以空格相分隔
举例
1234567890
0987654321
执行命令后
1234567890 0987654321
5.将以/符号结尾的行与下行合并并以空格分隔(拼接断行)
举例
1 111111111111111111/
2 222222222222222222
3 333333333333333333/
4 444444444444444444
sed -e :a -e '///$/N; s////n/ /; ta' filename
1 111111111111111111 2 222222222222222222
3 333333333333333333 4 444444444444444444
6.按关键字拼接行
如果某行以=开始,则合并到上一行并替代=为空格
举例
111111111111111111
222222222222222222
=333333333333333333
444444444444444444
sed -e :a -e '$!N;s//n=/ /;ta' -e 'P;D' filename
111111111111111111
222222222222222222 333333333333333333
444444444444444444
7.输出匹配行的下一行
举例
1 111111111111111111
2 222222222222222222
3 333333333333333333
4 444444444444444444
sed -n '/^3/{n;p;}' filename
4 444444444444444444
8.显示匹配行的行号并输出匹配行的上行、匹配行、下行
sed -n -e '/regexpr/{=;x;1!p;g;$!N;p;D;}' -e h
举例
1 111111111111111111
2 222222222222222222
3 333333333333333333
4 444444444444444444
sed -n -e '/^3/{=;x;1!p;g;$!N;p;D;}' -e h filename
3 #匹配行的行号
2 222222222222222222 #上一行
3 333333333333333333 #匹配行
4 444444444444444444 #下一行
9.删除文档中某标志区域内的关键字匹配行
删除文档中从being开到end结束的块中包含myword的行
myword
begin
myword
Number!
myword
Number!
myword
Number!
myword
Number!
end
myword
Number!
测试
begin
Number!
Number!
Number!
Number!
end
myword
Number!
五.字串解析
1.从字串中解析出两个子串(前2各字符和后9个字符)
We ChinaUnix
2.分解日期串
echo $year $month $day
2003 09 22
- sed学习笔记
- [转]Sed学习笔记
- sed编辑器学习笔记
- Sed学习笔记
- Sed学习笔记
- Sed学习笔记
- [转]Sed学习笔记
- Sed学习笔记
- sed命令学习笔记
- Sed学习笔记
- Sed学习笔记
- Sed学习笔记
- sed学习笔记
- Sed学习笔记
- [转]sed 学习笔记
- Sed学习笔记
- sed学习笔记
- Sed学习笔记[转]
- 产品开发实录(2)——打造时间轴
- IE8 jquery Ajax 导致Session 丢失问题解决办法
- 第一章 PL/SQL一览
- Setting for storage location
- 数值类型简介 (Overview of Numeric Types)(此文为转载)
- sed 学习笔记
- 基于视图的应用开发--关键函数的实现
- MapX系列-- 使用LayerInfo object 在map中添加已有的矢量图层
- VS2010 学习笔记 TDD (3) 从失败到成功(三)
- 面试题
- 第二章 PL/SQL基础
- Spring的事务属性意义------transactionAttributes
- Symbian 应用程序框架浅析
- ASP 生成文件的两种方法