zoukankan      html  css  js  c++  java
  • sed替换

    1. sed可以替换给定的文本中的字符串,可以利用正则表达式进行匹配
    $ sed 's/pattern/replace_string/' file
    或者
    $ cat file | sed 's/pattern/replace_string/' file
    使用-i选项,可以将替换的结果应用于原文件,也可以借助重定向来保存文件:
    sed 's/text/replace/' file > newfile
    其实可以使用
    sed -i 's/pattern/replace_string/' file
    后缀/g意味着替换每一处,有时候不需要替换前N处匹配,有一个选项可以用来忽略前N处匹配,并从第N+1处开始替换。
    $ echo this thisthisthis | sed 's/this/THIS/2g'
    $ echo this thisthisthis | sed 's/this/THIS/3g'
    当需要从第N处开始匹配时,可以使用/Ng
    字符/在sed中作为定界符使用,也可以用其他字符代替。

    1. 删除空白行
    sed '/^$/d' file

    2. 已匹配的字符串标记&
    echo this is an example | sed 's/w+/[&]/g'
    正则表达式w+匹配每个单词,然后用[&]来替换它,&对应于之前所匹配的单词。

    3. 子串匹配标记1
    &代表匹配给定样式的字符串,但我们也可以匹配给定样式的其中一部分
    echo this is digit 7 in a number | sed 's/digit ([0-9])/1/'
    这条命令将digit 7 替换成7,样式中匹配到的子串是7,(pattern)用于匹配子串,模式被包括在使用斜线转义过的()中,对于匹配到的第一个子串,其对应的标记是1,匹配到的第二个子串是2,往后依次类推,下面示例中包含了多个匹配:
    echo seven EIGHT | sed 's/([a-z]+) ([A-Z]+)/2 1/'

    4. 引用
    $text=hello
    echo "hello world" | sed "s/$text/HELLO/"

    5. 追加内容 sed ‘/匹配词/a要加入的内容’ example.file(将内容追加到匹配的目标行的下一行位置)
    i 插入内容 sed ‘/匹配词/i要加入的内容’ example.file 将内容插入到匹配的行目标的上一行位置)
    示例:
    #我要把文件的包含“chengyongxu.com”这个关键词的行前或行后加入一行,内容为“allow chengyongxu.cn”

    行前加
    sed -i '/allow chengyongxu.com/iallow chengyongxu.cn' the.conf.file
    行前后
    sed -i '/allow chengyongxu.com/aallow chengyongxu.cn' the.conf.file

    6. 删除指定行的上一行
    sed -i -e :a -e '$!N;s/.* (.*ServerName abc.com)/1/;ta' -e 'P;D' $file
    删除指定字符串之间的内容
    sed -i '/ServerName abc.com/,//VirtualHost/d' $filehttp://www.linuxso.com/shell/17542.html

    7. 也可在vi模式下,将文本中的内容替换,esc : %s/dog/sdog/ 这样可以把文件直接修改,然后保存即可
    在vi模式下也可进行区间替换,如将第2至第7行之间的cat 换成scat,esc : 2,7 s/cat/scat/ 同样保存修改即可

    8. sed查找行,如查找出vsftpd.conf中的非注释行
    [root@server4 shell]# cat vsfptd.conf | sed '/#/d'
    删除空格行和以#号开头的行,并写入文件vsftpd.config,用-e开关连接两个控制语句
    [root@server4 shell]# cat vsfptd.conf | sed -e'/^#/d' -e '/^$/d' >vsftpd.config

    9. sed删除匹配的行的后续多行
    $sed '/Storage/,+2d' thegeekstuff.txt
    sed删除匹配行到尾行
    $sed '/Website Design/,$d' thegeekstuff.txt
    sed删除匹配行到首行

  • 相关阅读:
    ansj分词原理
    于erlang依赖的linux调优
    Gearman
    生成具有三态背景图片的按钮
    tracert
    Wings 3D
    jira
    Erlang编程语言的一些痛点
    QTreeView 限制特定的深度、特定深度下的列 是否可以编辑
    QStandardItemModel角色控制及QTreeView添加不同的右键菜单
  • 原文地址:https://www.cnblogs.com/forilen/p/4387706.html
Copyright © 2011-2022 走看看