shell编程三剑客 |
您所在的位置:网站首页 › sed指定行追加 › shell编程三剑客 |
Sed:数据流编辑器 行编辑器,不是字处理器,只操作ASCLL码的,是按逐行处理文本。 全屏编辑器:vi,vim Sed在处理文本的时候,逐行将内容读取到内存中做处理,并将结果输出。这段内存空间称为“模式空间”,因为sed并不一定每一行都处理,可以根据一定的模式匹配某些行进行处理。默认不修改源文件,仅对模式空间中的数据做处理。处理结束后将模式空间中的内容打印出来。 man sed {}中的内容较为重要,称为 sed 脚本,sed 本身也是个语言 1.sed startline,endline file 从起始行到结束行,如1,100,从第一行到第100行 2.模式匹配行 sed /^root/file 以root开头的行 3. /模式1/,/模式2/ 表示该文件第一次被模式1匹配到行开始到第一次被模式2匹配的行结束,这中间的所有行 4.只给一个数值,行号 表示精确指定特定的行 sed 100 file 精确处理第100行,$表示最后一行 sed $ file ,$-1表示倒数第二行 5.指定起始行,使用+N,表示从指定行开始,向后的N行,一共为N+1行内容 sed 2,+10 file Sed中的命令: d:删除符合条件的行
(匹配第1,2行 ,d 表示删除之后,只剩下第三行了) (匹配到以asd的行,然后删除,只剩下aaa了) (从第一行开始,删除向后一行,一共删除两行) p:显示符合条件的行 下边的例子,符合条件的显示了两次,这是由于sed命令默认情乱下还要将模式空间中的内容也显示出来,而p命令则是显示匹配到的行,所以一共显示两行 (匹配以d结尾的行,p表示显示) -n 静默匹配,即不显示模式空间中的内容,只显示符合条件的行: a:用法 a \string---表示在指定的行后追加新行,内容为 string 若要在匹配行后增加两行,string 中\n 换行即可 i \string:表示在指定的行前面添加新行,内容为 string,\n 换行 r filename: 将指定的文件的内容添加至符合条件的行处 在第二行后边添加另外一个文件的内容 ![]() (在 t 文件后面的第二行添加 tt文件的内容) 呜啦啦,这里有些难理解啊 多行处理 w filename:将指定范围内的内容另存到指定的文件中 s : 查找并替换 s/匹配模式/要替换的内容/ 分隔符不仅限于/,可以是其他符合 如 s#匹配模式#要替换的内容# 默认是只替换每行中第一次匹配到的字符串 每行中所有匹配到的都替换 g:全局替换 i:查找时忽略字符大小写 sed 中的后向引用: &表示引用模式匹配的整个字符串 后向引用: 只引用匹配到的内容的一部分的时候,必须使用后向引用 将匹配到的单词的 l 字符大写
Sed 默认不会修改源文件,但是-i 选项,可以直接修改源文件 -e script -e script: 同时执行多个脚本 -f FILENAME : 将每个 script 一行保存至文件中,使用-f 读取脚本文件 sed -f /script file -r :默认情况下 sed 只支持基本正则,-r 使得 sed 可以使用扩展的正则表达式 练习: 1、History 命令的结果行首的空白字符删掉: 2、取出一个文件路径的目录名称 3、删除文件中以空白字符后边加#开头的行中的开头的空白字符及# 字符串 比较: ==:双等于号,双等号两端要有空格 !=:不等于 注意:以上二者得区别。 >:大于 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |