shell编程高级之sed编辑器

  • 简介
    #流编辑器
    #可以基于输入到命令行的或是存储在命令文本文件中的命令来处理数据流中的数据.
    #每次读取一行,用提供的编辑器命令匹配数据,按命令中指定的方式修改流中的数据,然将生成的数据输出到STDOUT.在流编辑器将所有命令与一行数据进行匹配后,它会读取下一行并重复这个过程直到处理完所有数据.
    #sed 自身不会修改文本文件的数据.只将修改后的数据发送到STDOUT
    sed options script file
    #sed 命令选项

    选项描述
    -e script在处理输入时,将script中指定的命令添加到运行的命令中
    -f file在处理输入时,将file中指定的命令添加到运行的命令中
    -n不要为每个命令生成输出,等待print命令来输出

    #在命令行使用sed echo "This is a test" | set 's/test/big test/'
    #修改文件 sed 's/dog/cat/' data.txt
    #在命令行使用多个编辑器命令 sed -e 's/This/That/; s/test/big test/'
    #从文件中读取编辑器命令 sed -f 编辑器命令文件名 数据文件名

  • sed编辑器基础

    #更多的替换选项
    # 替换标记
    s/pattern/replacement/flags

    标记描述
    数字替换第几处
    g全局替换
    p打印内容
    w file将替换的结果写入到文件中

    echo "This test is a big test" | sed 's/test/Test/'
    echo "This test is a big test" | sed 's/test/Test/2'
    echo "This test is a big test" | sed 's/test/Test/g'
    echo "This test is a big test" | sed 's/test/Test/p'
    echo "This test is a big test" | sed 's/test/Test/pg'

    # 替换字符
    #使用其他字符来作为sed命令的字符串分隔符
    sed 's!/bin/bash!/bin/sh' /etc/passwd
    #只修改文本中第二行数据
    sed '2s/dog/cat/' data1
    #修改文本中第二行和第十行之间的数据
    sed '2,10s/dog/cat/' data1
    #修改文本中第二行到最后一行的数据
    sed '2,$/s/dog/cat/' data1

    #使用文本模式过滤器
    sed '/wangjingj/s/bash/csh/' /etc/passwd
    sed '/pattern/s/pattern/replacement/flags' /etc/passwd
    #删除行
    #不加n则删除所有,n代表第几行
    #$代表文本文件的文件尾
    sed 'n1,n2($)d' data1

    #插入和附加文本
    #$代表文本文件的文件尾
    #在文本行前插入 i sed 'ni\
    # textcontent'

    #在文本行后追加 a sed 'na\
    # textcontent'

    #修改行 sed 'nc\
    # textcontent' data1

    # 使用文本模式 sed '/wang n/c\
    # textcontent'

    #转换命令 sed 'ny/inchars/outchars/'
    #字符级.全局替换.

    #回顾打印
    #打印行
    #p 打印文本行
    #= 打印行号
    #l 列出行

    #使用sed和文件一起
    #向文件写入 sed 'n1,n2w filename' data1
    #读取 sed 'nr filename' data1 ..读取filename文件 插入到data1的数据流的第n行中
    #$表示文件尾
    #文本模式 sed '/pattern n/r filename' data1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值