简述Linux文本处理命令“sed”


    文本处理编辑命令sed
    sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
    命令格式:
        sed [选项] ‘(截取的行)[动作]' 文件名
     选项:-n:只把经过sed处理的行输出
         -e:允许输入多条动作
        -i:sed修改的结果写入文件 
     截取行:(1)直接输入行号
         (2)/正则表达式/
         (3)x,y 从x到y行,也可以用正则取代
         (4)x,y! 取反
         (5)x~y 从x行开始,步进y行
         (6)$ 文档末 
     动作:p  打印   eg: sed -n '(行)p' student.txt
        a  行后增加新的一行,i  行前增加新的一行
            sed  '1,5a  ============='  student.txt
            sed  '/正则/a ============' student.txt
        d  删除某行
            sed  '/正则/d'  student.txt
            sed  '4d'  student.txt
        c  替换指定行    
            sed '2c canglaoshi bujigee' student.txt
            sed '/正则/c lalalalalalala' student.txt
        s  替换指定字符串(替换每行第一个);结尾g表示每一行所有
            sed  '/正则(定位行)/s/正则(旧)/abcd(新)/' student.txt
            sed  's/正则(旧)/abcd(新)/' student.txt (全文替换)
            sed  '/www/s/33/000/g' zz_test.txt
     操作:{}多个命令组合,用;分开
            sed  '{1,20p;s/www/s/33/000//g}'
        &  取原字符
            sed  's/abc/&def' student.txt (把abc换成abcdef)
        u  字符串首字母改成大写
            sed  's/abc/\u&/' student.txt (把abc改成Abc)
        l  字符串首字母改成小写
        U 字符串所有字母改成大写
            sed  's/abc/\U&/' student.txt (把abc改成ABC)
        L  字符串所有字母改成小写
        r 将某文件插入到另一文件的指定行中
            sed  '1r abc.txt'  123.txt (将abc.txt中的内容插入到123.txt文件的第1行)
        q  退出sed
            sed  '/false/q'  student.txt (找到一个false就退出sed)