sedC教程网cppcoursecom.ppt
文本预览下载声明
sed 第八章 * 本章目标 什么是流编辑器sed sed地址定位方式 sed编辑命令 * 流编辑器 sed sed 是一个精简的、非交互式的流式编辑器,它在命令行中输入编辑命令和指定文件名,然后在屏幕上查看输出。 * 逐行读取文件内容存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。原文件内容并没有改变。 sed简单用法 * 用法示例 sed [options] sed_cmds files 选项 -e 连接多个编辑命令 -f 指定sed脚本文件名 -n 阻止输入行自动输出 sed ‘4,$d’ test.in sed ‘3q’ test.in sed ‘s/public/PUBLIC/’ test.in sed -n ‘s/public/PUBLIC/p’ test.in 指定多个命令的三种方法 * 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命令 * test.sed文件内容如下: s/public/PUBLIC/ s/north/NORTH/ sed -f test.sed test.in sed命令语法 sed_cmd:使用格式: [address]sed_edit_cmd (通常用单引号括起来),其中 address 为 sed 的行定位模式,用于指定将要被 sed 编辑的行。如果省略,sed 将编辑所有的行。sed_edit_cmd 为 sed 对被编辑行将要进行的编辑操作。 * 定位方式 n 表示第 n 行 $ 表示最后一行 m,n 表示从第 m 行到第 n 行 /pattern/ 查询包含指定模式的行。如 /disk/、/[a-z]/ /pattern/,n 表示从包含指定模式的行 到 第 n 行 n,/pattern/ 表示从第 n 行 到 包含指定模式的行 /模式1/,/模式2/ 表示从包含模式1 到 包含模式2的行 ! 反向选择,如 m,n!的结果与 m,n 相反 sed_cmd 中 address 的定位方式 * 常用 sed 编辑命令 p :打印匹配行 sed -n 3,5p test.in // (3,5!p) sed -n $p test.in sed -n /north/p test.in = :显示匹配行的行号 sed -n /north/= test.in d :删除匹配的行 sed /north/d test.in 常用的 sed_edit_cmd * 常用 sed 编辑命令 a\ :在指定行后面追加一行或多行文本,并显示添加的 新内容,该命令主要用于 sed 脚本中。 sed /north/a\AAA\ BBB\ CCC test i\ :在指定行前插入一行或多行,并显示添加的新内容, 使用格式同 a\ c\ :用新文本替换指定的行,使用格式同 a\ l :显示指定行中所有字符,包括控制字符(非打印字符) sed -n /north/l test.in * 常用 sed 编辑命令 s :替换命令,使用格式为: 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-9][0-9]$/.5/ datafile 符号用在替换字符串中时,代表 被替换的字符串 [address]s/old/new/[gpw] * 常用 sed 编辑命令 r :读文件,将另外一个文件中的内容附加到指定行后。 sed $r data test.in w :写文件,将指定行写入到另外一个文件中。 sed -n /public/w data2 test.in n :将指定行的下面一行读入编辑缓冲区。 sed -n /public/{n;s/north/NORTH/p} test.in 对指定行同时使用多个 sed 编辑命令时,需用大括号 “ {} ” 括起来,
显示全部