1、sed,第八章,1,本章目标,什么是流编辑器sed sed地址定位方式 sed编辑命令,2,流编辑器 sed,sed 是一个精简的、非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出。,3,逐行读取文件内容存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。原文件内容并没有改变。,sed简单用法,4,sed 4,$d test.in sed 3q test.in sed s/public/PUBLIC/ test.in sed -n
2、s/public/PUBLIC/p test.in,指定多个命令的三种方法,5,1、用分号分隔命令 sed s/public/PUBLIC/;s/north/NORTH/ test.in 2、每个命令前放置-e sed -e s/public/PUBLIC/ -e s/north/NORTH/ test.in 3、使用分行命令功能,在输入单引号后按return键就会出现多行提示符() sed s/public/PUBLIC/ s/north/NORTH/ test.in,在脚本中使用sed命令,6,test.sed文件内容如下: s/public/PUBLIC/ s/north/NORTH/,
3、sed -f test.sed test.in,sed命令语法,sed_cmd:使用格式: addresssed_edit_cmd (通常用单引号括起来),其中 address 为 sed 的行定位模式,用于指定将要被 sed 编辑的行。如果省略,sed 将编辑所有的行。sed_edit_cmd 为 sed 对被编辑行将要进行的编辑操作。,7,定位方式,sed_cmd 中 address 的定位方式,8,常用 sed 编辑命令,p :打印匹配行,sed -n 3,5p test.in / (3,5!p),sed -n $p test.in,sed -n /north/p test.in,= :
4、显示匹配行的行号,sed -n /north/= test.in,d :删除匹配的行,sed /north/d test.in,常用的 sed_edit_cmd,9,常用 sed 编辑命令,a :在指定行后面追加一行或多行文本,并显示添加的 新内容,该命令主要用于 sed 脚本中。,sed /north/aAAA BBB CCC test,i :在指定行前插入一行或多行,并显示添加的新内容, 使用格式同 a,c :用新文本替换指定的行,使用格式同 a,l :显示指定行中所有字符,包括控制字符(非打印字符),sed -n /north/l test.in,10,常用 sed 编辑命令,s :替换
5、命令,使用格式为:,sed -n s/north/NORTH/gp test.in,address :如果省略,表示编辑所有的行。g :全局替换p :打印被修改后的行w fname :将被替换后的行内容写到指定的文件中,sed -n s/north/NORTH/w data test.in,sed s/0-90-9$/&.5/ datafile,& 符号用在替换字符串中时,代表 被替换的字符串,addresss/old/new/gpw,11,常用 sed 编辑命令,r :读文件,将另外一个文件中的内容附加到指定行后。,sed $r data test.in,w :写文件,将指定行写入到另外一个
6、文件中。,sed -n /public/w data2 test.in,n :将指定行的下面一行读入编辑缓冲区。,sed -n /public/n;s/north/NORTH/p test.in,对指定行同时使用多个 sed 编辑命令时,需用大括号 “ ” 括起来,命令之间用分号 “ ; ” 格开。注意与 -e 选项的区别,12,常用 sed 编辑命令小结,q :退出,读取到指定行后退出 sed。,sed 3q test.in,常见的 sed 编辑命令小结,13,sed命令示例,14,Sed配合正则表达式能够发挥它的更大威力以下两个命令都能显式vsftpd.conf中的配置行 grep -v # /etc/vsftpd/vsftpd.conf cat /etc/vsftpd/vsftpd.conf | sed s/#.*$/g| sed /$/d,总结,什么是流编辑器sed sed地址定位方式 sed编辑命令,15,