shell学习3--sed流编辑器

来源:互联网 发布:java开发人事管理系统 编辑:程序博客网 时间:2024/06/06 09:23
     sed编辑器不提供交互使用方式:只能在命令行输入编辑命令、指定文件名,然后屏幕上擦看输出;并且sed没有破坏性,它不会修改文件,除非用shell重定向来保存输出结果,默认情况下所有输出都是输出到屏幕的,所以sed又被称为流编辑器。
       注意:1.sed中凡是可能被shell解释的字符都必须加引号进行保护。
                 2.sed是以行为单位处理文本的。
       格式:sed 参数    ‘command’    filename(s)  eg: sed '1,3p'  file1  打印file1的第一到第三行
       参数:可有可无
             常用参数:
               -e     多项编辑       sed    -e ‘1,3p’   -e  ‘4,5p’   file1;
               -f     指定sed脚本文件名。sed脚本也就是command的集合
                        sed  -f  output.sed   file1
               -n     取消缺省的输出。sed是默认输出所有行的。取消后,可有命令p来控制输出某一行
       command: 包含两个模块:定址命令和处理命令。
           1.定址命令:可不出现,表示默认处理所有行。
                   形式可以是数字、正则表达式或者两者的组合。
                    比如: 1,3          表示第一行到地三行 。
                               /^[a-Z]/       表示以小写字母开头的行。
                               3,/^[a-z]/  表示第三行到以小写字母开头的行。
           2.处理命令:告诉sed对行进行什么处理,包括打印删除修改等。紧跟在定址命令后面。
                     比如:sed 3,/^[a-z]/p  file1打印文件file1的第三行到以小写字母开头的行。
                    常用的命令有:
                       a      在当前行后面添加一行或者多行        
                               sed  '$i the end' file1   #添加’theend‘到文件尾,其他行正常输出
                       i        在当前行前面添加一行或者多行        
                                sed   ‘1i  thestart‘ file1   #添加’the start‘到文件头,其他行正常输出
                       d       删除行
                              sed  ‘1,^[a-z]d'  file1  删除第一行到以小写字母开头的所有行,其他正常输出
                       p       打印行
                                sed   ‘20,30p' file1  再次输出第20行到第30行,其他正常输出
                       r       读文件,并输出到屏幕
                                sed  ‘/hello/r   file2’ file1 #遇到包含hello的行时,在该行下面输出file2的内容
                       w      写入文件。
                               sed  ‘/hello/w   file2‘ file1  #把包含hello的行写入到file2中
                       s      替换字符串。格式为  s/被替换字符串/替换字符串/替换标志
                              被替换字符串可用正则表达式来选择,但是替换字符串则不可。
                               替换标志:表示替换后的操作,可多个操作。
                                      g   在匹配行内全局替换。如果没有,则只替换匹配到的第一个字符串
                                      p    替换完后输出该行
                                      w    把替换完的该行写入文件
                           sed ‘s/^[a-z]*  /hello/p' file1   #把以小写字母开头的第一个字段替换成hello并输出
                       
0 0
原创粉丝点击