码迷,mamicode.com
首页 > 其他好文 > 详细

sed使用

时间:2015-03-15 19:55:38      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:bash   sed   


字符串处理个几个操作为
    替换,切割,打印,统计

sed
    在缓存中进行更改,不影响原文件,然后默认将缓存输出,所以使用d命令删除的不会输出
    语法:    some_command | sed ‘edit commands‘
        sed ‘edit commands‘ files
    edit commands的一般形式为:
    /pattern/action

    action描述
    p    打印行(print)
    d    删除行(delete)
    s    用一个新表达式替换旧表达式(substitute)

    一个替换例子
        sed ‘s/helllo@world.com/hello@world.com/g‘ "$file" > "$file.$$"
    此例前面没有/pattern/表示对所有行进行action。而替换操作s的一般格式是
        s/pattern2/pattern3/
    或    /pattern1/s/pattern2/pattern3/
    pattern1用来确定要操作的行,s/pattern2/pattern3/看作是action
    最后的符号g是global的意思,因为替换命令s默认只对行数据第一个匹配pattern2的字符串进行替换,添加g符号可以行全局替换

    在没有指定-n选项时,每一行读入的,都会输出到输出流,即使没有任何操作。p命令明确确定输出到输出流,一般和-n一起用,否则会输出两次。

    使用分号可以连接多个/pattern/action,用-e指定多个编辑命令,用-f script-file选项通过文件指定编辑命令。但本质都是按出现顺序执行。将前一条命令的输出作为输入传给后一条命令

    匹配时忽略大小写可以使用i或I修饰符
    修饰符:
num
只取代一行中第num个匹配
p
如果匹配成功,打印模式空间
w FILENAME
如果匹配成功,把结果写到文件FILENAME中(gnu sed 可以向/dev/stderr和/dev/stdout中写数据)
g
全局匹配,而不是只替换第一个匹配
i or I
大小写不敏感

    pattern中的/可以用反斜杠转义,但多了就乱了。
    sed在使用s命令时会以s字符后的字符作为分隔符。

    选择要操作的行
    在sed命令前指定要操作的地址
    指定某行 sed ‘11d‘
    指定范围 sed ‘3,26d‘  另一形式:sed -n ‘3,+3p‘ 指定开始的行号,然后指定后面行数。

    指定范围取反, sed ‘3,26!p‘  在范围后加!表示取反范围。单行也可加

    指定步长, sed ‘ 1~2p‘   从第一行开始,步长2

    可加正则表达式,正则表达式在斜杠中间。
    用正则表达式确定匹配的行范围
    sed -n ‘/^#net.ipv4.conf.all.accept_redirects/,/^#net.ipv6.conf.all.accept_source_route/p‘

    可以引用正则表达式匹配的字符串,用&符号
    sed ‘s/^[^#].*$/#&/‘

本文出自 “重剑无锋” 博客,请务必保留此出处http://qianyang.blog.51cto.com/7130735/1620563

sed使用

标签:bash   sed   

原文地址:http://qianyang.blog.51cto.com/7130735/1620563

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!