精华内容
下载资源
问答
  • sed替换的基本语法为:sed ‘s/原字符串/替换字符串/‘单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单...

    sed替换的基本语法为:

    sed ‘s/原字符串/替换字符串/‘

    单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行了,例如:

    sed "s/原字符串包含‘/替换字符串包含‘/" //要处理的字符包含单引号

    命令中的三根斜线分隔符可以换成别的符号,这在要替换的内容有较多斜线是较为方便,只需要紧跟s定义即可,例如换成问号”?”:

    sed ‘s?原字符串?替换字符串?‘ //自定义分隔符为问号

    可以在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个,例如:

    sed ‘s/原字符串/替换字符串/‘ //替换所有匹配关键字

    上箭头”^”表示行首,美元”$”符号如果在引号中表示行尾,但是在引号外却表示末行(最后一行),这里犯二了,搜了半天哪个符号表示首行,半天才想起来,首行就是数字”1″啊.那么在行首和行尾添加字符串就是把行尾和行首替换,例如:

    sed ‘s/^/添加的头部&/g‘ //在所有行首添加

    sed ‘s/$/&添加的尾部/g‘ //在所有行末添加

    sed ‘2s/原字符串/替换字符串/g‘ //替换第2行

    sed ‘$s/原字符串/替换字符串/g‘ //替换最后一行

    sed ‘2,5s/原字符串/替换字符串/g‘ //替换2到5行

    sed ‘2,$s/原字符串/替换字符串/g‘ //替换2到最后一行

    替换样式可以多个在同一条命令中执行,用分号”;”分隔,例如:

    sed ‘s/^/添加的头部&/g;s/$/&添加的尾部/g‘ //同时执行两个替换规则

    sed处理过的输出是直接输出到屏幕上的,要保存可以将输出重定向,或者使用参数”i”直接在文件中替换:

    sed -i ‘s/原字符串/替换字符串/g‘ filename //替换文件中的所有匹配项

    时间: 08-16

    展开全文
  • Linux中使用sed命令替换字符串

    万次阅读 2018-06-08 15:54:06
    文本替换:sed 's#原字符串#新... s 单独使用→将每一行中第一匹配字符串进行替换 g 每一行进行全部替换→sed指令s的替换标志之一(全局替换) sed -i 's/原字符串/替换字符串/g' filename ####替换文件中的所有匹...

     

    文本替换:sed 's#原字符串#新字符串#g'  file

                        s     单独使用→将每一行中第一处匹配的字符串进行替换
                        g     每一行进行全部替换→sed指令s的替换标志之一(全局替换)

    sed -i 's/原字符串/替换字符串/g' filename              ####替换文件中的所有匹配项
    sed 's/^/添加的头部&/g'                                       ####在所有行首添加
    sed 's/$/&添加的尾部/g'                                       ####在所有行末添加
    sed '2s/原字符串/替换字符串/g'                              ####替换第2行
    sed '$s/原字符串/替换字符串/g'                              ####替换最后一行
    sed '2,5s/原字符串/替换字符串/g'                            ####替换2到5行
    sed '2,$s/原字符串/替换字符串/g'                            ####替换2到最后一行

    sed 's/^/添加的头部&/gs/$/&添加的尾部/g'           ####同时执行两个替换规则,中间加分号

    sed取区间范围并替换:

     例:取  {}  范围(以{开头,以}结尾的行),并将其中的AAA替换为BBB

     

    sed    '/^{/,/}$/s#AAA#BBB#g'    liangjc.txt

     

    取区间:sed -n '/^device/,/\}$/p'  liangjc.txt     ####取以device开头并以}结尾的行

     

     

    删除操作

                   删除文件的第2行:sed '2d' file

                   删除文件的第2行到末尾所有行:sed '/^$/d' file

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

     

    sed 查询单行文本:

           查询多行文本  使用数字地址范围         sed -n '2,4p' hi.txt

           查询指定多行                                   sed -n '2p;4p;10p;30p' hi.txt

    增加单行文本

           a     追加append,在指定行后添加一行或多行文本

           i   插入insert,在指定行前添加一行或多行文本

    ########将 hello world 追加到以test开头的行前面:      sed '/^this/i\hello world ' file

    ########在t1.txt文件第1行之前插入test:      sed -i '5i\test' t1.txt

     

    展开全文
  • linux sed 批量替换字符串 月 21, 2014 ( NO COMMENTS ) Linux下批量替换多文件中的字符串的简单方法。用sed命令可以批量替换多文件中的字符串。 命令如下:sed -i “s/原字符串/新字符串/g” `...

    linux sed 批量替换字符串

    Linux下批量替换多个文件中的字符串的简单方法。用sed命令可以批量替换多个文件中的字符串。

    命令如下:sed -i “s/原字符串/新字符串/g” `grep 原字符串 -rl 所在目录`

    例如:我要把 charset=gb2312 替换为 charset=UTF-8,执行命令:sed -i “s/charset=gb2312/charset=UTF-8/g” ‘grep charset=gb2312 -rl /www’ 即可。

    解释一下:

    -i 表示inplace edit,就地修改文件

    -r 表示搜索子目录

    -l 表示输出匹配的文件名

    这个命令组合很强大,要注意备份文件。

    关于 sed 的更多说明:

    1. sed ‘y/1234567890/ABCDEFGHIJ/’ test_sed

    test_sed的内容是:

    1234567890

    2345678901

    3456789012

    4567890123

    执行后,test_sed的内容是:

    ABCDEFGHIJ

    BCDEFGHIJA

    CDEFGHIJAB

    DEFGHIJABC

    注意变换关系是按两个list的位置对应变换

    2. 替换每行所有匹配

    sed ‘s/01/Ab/g’ test_sed

    1234567890

    23456789Ab

    3456789Ab2

    456789Ab23

    注意:第一行的0,1没有分别替换为A,b

    删除:d命令

    $ sed ‘2d’ example—–删除example文件的第二行。

    $ sed ‘2,$d’ example—–删除example文件的第二行到末尾所有行。

    $ sed ‘$d’ example—–删除example文件的最后一行。

    $ sed ‘/test/’d example—–删除example文件所有包含test的行。

    替换:s命令

    $ sed ‘s/test/mytest/g’ example—–在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。

    $ sed -n ‘s/^test/mytest/p’ example—–(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。

    $ sed ‘s/^192.168.0.1/&localhost/’example—–&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加localhost,变成192.168.0.1localhost。

    $ sed -n ‘s/\(love\)able/\1rs/p’ example—–love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。

    $ sed ‘s#10#100#g’ example—–不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。

    选定行的范围:逗号

    $ sed -n ‘/test/,/check/p’ example—–所有在模板test和check所确定的范围内的行都被打印。

    $ sed -n ‘5,/^test/p’ example—–打印从第五行开始到第一个包含以test开始的行之间的所有行。

    $ sed ‘/test/,/check/s/$/sed test/’ example—–对于模板test和west之间的行,每行的末尾用字符串sed test替换。

    多点编辑:e命令

    $ sed -e ‘1,5d’ -e ‘s/test/check/’example—–(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。

    $ sed –expression=’s/test/check/’ –expression=’/love/d’ example—–一个比-e更好的命令是–expression。它能给sed表达式赋值。

    从文件读入:r命令

    $ sed ‘/test/r file’ example—–file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。

    写入文件:w命令

    $ sed -n ‘/test/w file’ example—–在example中所有包含test的行都被写入file里。

    追加命令:a命令

    $ sed ‘/^test/a\\—>this is a example’ example<—–‘this is a example’被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。

    插入:i命令

    $ sed ‘/test/i\\

    new line

    ————————-‘ example

    如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。

    下一个:n命令

    $ sed ‘/test/{ n; s/aa/bb/; }’ example—–如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。

    变形:y命令

    $ sed ‘1,10y/abcde/ABCDE/’ example—–把1–10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。

    退出:q命令

    $ sed ’10q’ example—–打印完第10行后,退出sed。

    保持和获取:h命令和G命令

    $ sed -e ‘/test/h’ -e ‘$Gexample—–在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。

    保持和互换:h命令和x命令

    $ sed -e ‘/test/h’ -e ‘/check/x’ example —–互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。

     

    展开全文
  • Linux sed 替换第一次出现的字符串

    千次阅读 2016-12-16 20:33:00
    /********************************************************************************* ... * Linux sed 替换第一次出现的字符串 * 说明: * 需要替换配置文件中第一次出现的文本内容。 * * ...
    /*********************************************************************************
     *                  Linux sed 替换第一次出现的字符串
     * 说明:
     *     需要替换配置文件中第一次出现的文本内容。
     *
     *                                       2016-12-16 深圳 南山平山村 曾剑锋
     ********************************************************************************/
    
    一、参考文档:
        How to use sed to replace only the first occurrence in a file?
            http://stackoverflow.com/questions/148451/how-to-use-sed-to-replace-only-the-first-occurrence-in-a-file
    
    二、测试代码:
        sed -i '0,/IP = .*/s/IP = .*/IP = 10.10.10.10/' /usr/share/config.conf

     

    转载于:https://www.cnblogs.com/zengjfgit/p/6188311.html

    展开全文
  • 操作系统版本 64位 centos 8.1.1911 ...我期望的结果: 不要有第一个空行,不要问号,也就是下面这样 ``` line: ['/etc/profile.t/which1.csh'] line: ["/etc/profile.t/which'2.csh"] ``` 求正确的sed命令
  • shell :linux sed 批量替换字符串

    万次阅读 2018-08-20 15:43:01
    linux sed 批量替换字符串 月 21, 2014 ( No Comments ) Linux下批量替换多文件中的字符串的简单方法。用sed命令可以批量替换多文件中的字符串。 命令如下: sed -i "s/原字符串/新字符串/g" `...
  • sed 删除匹配行的指定字符串

    千次阅读 2019-05-17 16:36:58
    第一步: # sed "s/\$remote_addr/[\$time_iso8601]/" 1.txt log_format main '[ $time_iso8601 ] - $remote_user [ $time_local ] " $request " ' ' $status $body_bytes_sent " $http_referer " '...
  • sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单引号改为双引号就行...
  • Linux中使用sed命令替换字符串小结

    千次阅读 2015-11-17 10:37:36
    这篇文章主要介绍了Linux中使用sed命令替换字条串小结,纯属...sed 's/原字符串/替换字符串/' 单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,625
精华内容 9,450
关键字:

linuxsed匹配的第一个字符串

linux 订阅