分类: LINUX
2010-05-07 10:02:50
1. 打印:p [root@TestAs4 chap04]# cat datafile 原文件 northwest NW Charles Main 3.0 .98 3 34 western WE Sharon Gray 5.3 .97 5 23 southwest SW Lewis Dalsass 2.7 .8 2 18 southern SO Suan Chin 5.1 .95 4 15 southeast SE Patricia Hemenway 4.0 .7 4 17 eastern EA TB Savage 4.4 .84 5 20 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 central CT Ann Stephens 5.7 .94 5 13 [root@TestAs4 chap04]# sed -n '/north/p' datafile 取消默认输出 只打印包含模板的行 northwest NW Charles Main 3.0 .98 3 34 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 [root@TestAs4 chap04]# sed '/north/p' datafile 打印包含模板的行及打印默认输出 northwest NW Charles Main 3.0 .98 3 34 northwest NW Charles Main 3.0 .98 3 34 western WE Sharon Gray 5.3 .97 5 23 southwest SW Lewis Dalsass 2.7 .8 2 18 southern SO Suan Chin 5.1 .95 4 15 southeast SE Patricia Hemenway 4.0 .7 4 17 eastern EA TB Savage 4.4 .84 5 20 northeast NE AM Main Jr. 5.1 .94 3 13 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 north NO Margot Weber 4.5 .89 5 9 central CT Ann Stephens 5.7 .94 5 13 2. 删除:d [root@TestAs4 chap04]# sed '3d' datafile 删除第三行 northwest NW Charles Main 3.0 .98 3 34 western WE Sharon Gray 5.3 .97 5 23 southern SO Suan Chin 5.1 .95 4 15 southeast SE Patricia Hemenway 4.0 .7 4 17 eastern EA TB Savage 4.4 .84 5 20 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 central CT Ann Stephens 5.7 .94 5 13 [root@TestAs4 chap04]# sed '3,$d' datafile 删除第三行到最后的所有行 northwest NW Charles Main 3.0 .98 3 34 western WE Sharon Gray 5.3 .97 5 23 [root@TestAs4 chap04]# sed '/north/d' datafile 删除所有包含模板north的行 western WE Sharon Gray 5.3 .97 5 23 southwest SW Lewis Dalsass 2.7 .8 2 18 southern SO Suan Chin 5.1 .95 4 15 southeast SE Patricia Hemenway 4.0 .7 4 17 eastern EA TB Savage 4.4 .84 5 20 central CT Ann Stephens 5.7 .94 5 13 3. 选定行的范围:逗号 [root@TestAs4 chap04]# sed -n '/west/,/east/p' datafile 所有在模板west和east所确定的行都被打印 northwest NW Charles Main 3.0 .98 3 34 western WE Sharon Gray 5.3 .97 5 23 southwest SW Lewis Dalsass 2.7 .8 2 18 southern SO Suan Chin 5.1 .95 4 15 southeast SE Patricia Hemenway 4.0 .7 4 17 [root@TestAs4 chap04]# sed -n '1,5'p datafile 打印第一、五行的内容 northwest NW Charles Main 3.0 .98 3 34 western WE Sharon Gray 5.3 .97 5 23 southwest SW Lewis Dalsass 2.7 .8 2 18 southern SO Suan Chin 5.1 .95 4 15 southeast SE Patricia Hemenway 4.0 .7 4 17 [root@TestAs4 chap04]# sed '/west/,/east/s/$/**?VACA**/' datafile 对于east和west之间的行,末尾用**?VACA**替换 northwest NW Charles Main 3.0 .98 3 34**?VACA** western WE Sharon Gray 5.3 .97 5 23**?VACA** southwest SW Lewis Dalsass 2.7 .8 2 18**?VACA** southern SO Suan Chin 5.1 .95 4 15**?VACA** southeast SE Patricia Hemenway 4.0 .7 4 17**?VACA** eastern EA TB Savage 4.4 .84 5 20 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 central CT Ann Stephens 5.7 .94 5 13 [root@TestAs4 chap04]# sed -n '/west/,/south/p' datafile northwest NW Charles Main 3.0 .98 3 34 western WE Sharon Gray 5.3 .97 5 23 southwest SW Lewis Dalsass 2.7 .8 2 18 4.多点编辑:e命令 [root@TestAs4 chap04]# sed -e '1,3d' -e 's/Hemenway/Jones/' datafile 删除1到3行,用Hemenway替换Jones southern SO Suan Chin 5.1 .95 4 15 southeast SE Patricia Jones 4.0 .7 4 17 eastern EA TB Savage 4.4 .84 5 20 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 central CT Ann Stephens 5.7 .94 5 13 5. 从文件读入:r 命令 [root@TestAs4 chap04]# cat newfile nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn | ***SUAN HAS LEFT THE COMPANY*** | |_________________________________| [root@TestAs4 chap04]# sed '/Suan/r newfile' datafile 把newfile文件内容放到Suan行的下面 northwest NW Charles Main 3.0 .98 3 34 western WE Sharon Gray 5.3 .97 5 23 southwest SW Lewis Dalsass 2.7 .8 2 18 southern SO Suan Chin 5.1 .95 4 15 nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn | ***SUAN HAS LEFT THE COMPANY*** | |_________________________________| southeast SE Patricia Hemenway 4.0 .7 4 17 eastern EA TB Savage 4.4 .84 5 20 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 central CT Ann Stephens 5.7 .94 5 13 注:如果不止一个Suan 则newfile的内容就将显示在所有匹配行的下面 6. 写入文件:w命令 [root@TestAs4 chap04]# sed -n '/north/w newfile2' datafile 命令w表示把所有包含north的行写入到newfile2 [root@TestAs4 chap04]# cat newfile2 northwest NW Charles Main 3.0 .98 3 34 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 7. 追加:a 命令 [root@TestAs4 chap04]# sed '/^north/a ---->THE NORTH SALES DISTRICT HAS MOVED northwest NW Charles Main 3.0 .98 3 34 ---->THE NORTH SALES DISTRICT HAS MOVED western WE Sharon Gray 5.3 .97 5 23 southwest SW Lewis Dalsass 2.7 .8 2 18 southern SO Suan Chin 5.1 .95 4 15 southeast SE Patricia Hemenway 4.0 .7 4 17 eastern EA TB Savage 4.4 .84 5 20 northeast NE AM Main Jr. 5.1 .94 3 13 ---->THE NORTH SALES DISTRICT HAS MOVED north NO Margot Weber 4.5 .89 5 9 ---->THE NORTH SALES DISTRICT HAS MOVED central CT Ann Stephens 5.7 .94 5 13 注: 在出现首个单词是north的后一行追加---->THE NORTH SALES DISTRICT HAS MOVED行 8. 插入: i 命令 [root@TestAs4 chap04]# sed '/eastern/i\ > NEW ENGLAND REGION\ > -------------------------------------' datafile northwest NW Charles Main 3.0 .98 3 34 western WE Sharon Gray 5.3 .97 5 23 southwest SW Lewis Dalsass 2.7 .8 2 18 southern SO Suan Chin 5.1 .95 4 15 southeast SE Patricia Hemenway 4.0 .7 4 17 NEW ENGLAND REGION ------------------------------------- eastern EA TB Savage 4.4 .84 5 20 northeast NE AM Main Jr. 5.1 .94 3 13 north NO Margot Weber 4.5 .89 5 9 central CT Ann Stephens 5.7 .94 5 13 注:如果模板eastern被匹配,i命令把反斜杠后面的文本插入到包含eastern的行的前面 9. 替换:s 命令 [root@TestAs4 oracle]# pwd /u01/app/oracle [root@TestAs4 oracle]# pwd | sed 's/\/[^\/]*$/old/' 把“/ u01/app/oracle”的 “/oracle”替换为old /u01/appold [root@TestAs4 chap04]# sed -n 's/Hemenway/Jones/pg' datafile 所有的Hemenway行被Jones 替换并打印 southeast SE Patricia Jones 4.0 .7 4 17 |