[关闭]
@wyjgd 2019-09-01T14:00:27.000000Z 字数 1282 阅读 631

文本三剑客——sed


sed介绍

Stream EDitor 行编辑器
sed是一种流编辑器,一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区,称为模式空间,接着sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容显示在屏幕。然后读入下行,执行下一个循环。
功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写程序等。

用法

sed [option] 'script' inputfile

常用选项:
    -n:不输出模式空间内容到屏幕,即不自动打印
    -e:多点编辑
    -f:从指定文件中读取编辑脚本
    -r:支持扩展正则
    -i.bak:备份文件并原处编辑
    -i:对文件进行修改保存
    script:地址命令
编辑命令:
    d:删除模式空间匹配的行,并立即启用下一轮循环
    p:打印当前模式空间内容,追加到默认输出之后
    a[\]text:在指定行后面追加文本,支持\n实现多行追加
    i[\]text:在行前面插入文本
    c[\]text:替换行为单行或多行文本
    w /path/file:保存模式匹配的行至指定文件
    r /path/file:读取指定文件的文本至模式空间中匹配到的行后
    =:为模式空间中的行打印行号
    !:模式空间中匹配行取反
地址定界:
    不给地址:对全文进行处理
    sed   ''  /etc/passwd   显示passwd文件内的内容
    单地址:
        #:指定的行(sed -n '2p' f1)
        $:最后一行
            sed  -n  '2p'  /etc/passwd   第二行
            sed -n  '$p'   /etc/passwd   最后一行
        sed -n '/^U/p'  /etc/fstab     查找U开头的行
    地址范围:
            #,#
            #,+#
            /part1/,/part2/
            #,/part1/

            seq  1 10 |sed  -n  '3,6p'
            3 4 5 6
            seq 1 10|sed -n '3,+6p'
            3 4 5 6 7 8 9 
            sed -n '/^tcp/,/^test/p' /etc/passwd 以tcp开头的行到以test开头行为止

    ~:步进
        1~2 奇数行
        2~2 偶数行


    替换:
        s///:查找替换,支持使用其他分隔符,如s@@@,s###
        替换标记:
                g 行内全局替换
                p 显示替换成功的行
                w /path/file 将替换成功的行保存至文件中

实践

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注