精华内容
下载资源
问答
  • linux sed 匹配的第一个字符串
    2021-09-18 15:34:23

    Linux中使用sed命令替换字符串

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

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

    举例

    sed -i ‘s/原字符串/替换字符串/g’ filename ####替换文件中的所有匹配项
    sed ‘s/^/添加的头部&/g’ ####在所有行首添加
    sed ‘s/KaTeX parse error: Expected 'EOF', got '&' at position 2: /&̲添加的尾部/g' …s/原字符串/替换字符串/g’ ####替换最后一行
    sed ‘2,5s/原字符串/替换字符串/g’ ####替换2到5行
    sed ‘2,KaTeX parse error: Expected 'EOF', got '#' at position 44: … #̲###替换2到最后一行 sed…/&添加的尾部/g’ ####同时执行两个替换规则,中间加分号

    参考

    https://blog.csdn.net/weixin_42331537/article/details/80623582?

    更多相关内容
  • 原文网址:http://blog.sina.com.cn/s/blog_730edb930100qzz5.html比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做:sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules` (已验证)解释...

    原文网址:http://blog.sina.com.cn/s/blog_730edb930100qzz5.html

    比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做:

    sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`   (已验证)

    解释一下:

    -i 表示inplace

    edit,就地修改文件

    -r 表示搜索子目录

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

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

    (1)sed 'y/1234567890/ABCDEFGHIJ/'

    test_sed

    sed 'y/1234567890/ABCDEFGHIJ/'

    filename

    ABCDEFGHIJ

    BCDEFGHIJA

    CDEFGHIJAB

    DEFGHIJABC

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

    其中:test_sed的内容是:

    1234567890

    2345678901

    3456789012

    4567890123

    (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

    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 '$G

    example-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将

    打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保

    持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中

    的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。

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

    $ sed -e '/test/h' -e '/check/x'

    example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。

    展开全文
  • 在本篇文章中小编给大家分享了关于Linux下如何使用sed命令替换字符串的相关知识点内容,有需要的朋友们学习下。
  • 沒有「g」表示只替換第一個匹配到的字符串,有「g」表示替換所有能匹配到的字符串,「g」可以認為是「global」(全局的)的縮寫,沒有「全局的」結尾就不要替換全部,這樣就好記啦。命令可以使用正則表達式來處理。...

    命令格式2:sed ‘s/原字符串/新字符串/g’ 文件

    這兩種命令格式的區別在於是否有個「g」。沒有「g」表示只替換第一個匹配到的字符串,有「g」表示替換所有能匹配到的字符串,「g」可以認為是「global」(全局的)的縮寫,沒有「全局的」結尾就不要替換全部,這樣就好記啦。命令可以使用正則表達式來處理。如下圖,第一個命令只是將第一個「b」替換成了「B」,其他的都沒有替換;而第二個命令將全文中的數字都替換成了「好的」。

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==只替換第一個匹配項

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==替換所有匹配項

    二、替換某行內容

    命令格式1:sed ‘行號c 新字符串’ 文件

    命令格式2:sed ‘起始行號,終止行號c 新字符串’ 文件

    第一個命令表示用新的字符串替換指定這一行的內容, 第二個命令表示用新字符串替換指定幾行的內容。如下圖,第一個命令將第2行內容替換成了「new test!」,第二個命令將第2到6行替換成了「new test!」。

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==替換指定行內容

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==替換指定幾行內容

    三、多條件替換

    命令格式:sed -e 命令1 -e 命令2 -e 命令3

    有些時候有多個替換條件,那就可以使用「-e」參數將這些替換條件連接起來,一次性完成所有的替換操作。例如,可以將上述的兩種命令連接起來:「sed -e ‘s/原字符串/新字符串/’ ‘行號c 新字符串’ 文件」。如下圖,不僅將小寫「a」替換成了大寫「A”,還將第2行內容替換成了「new test!」。

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==多條件替換

    四、保存替換結果到文件中

    命令格式:sed -i 命令

    上述這些命令都只是將替換結果打印到屏幕上,如果想保存結果到文件中,就需要加上「-i」參數。

    gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==保存替換結果到文件中

    注意,在輸入Linux命令前,一定要將輸入法切換成英文半角符號狀態。從Windows電腦上複製命令到Linux Terminal中執行時,也有可能遇到格式不正確造成的命令執行錯誤,這時建議手動重新輸入字符,如果覺得輸入麻煩,可以只刪除命令中的空格和最後一個字符後,重新輸入空格和最後一個字符。

    展开全文
  • 1.替换文件中的字符串 $sed -i ‘s/text/replace/g’ file #如果不加g结尾,则替换每一行的第一个 #如果只是打印,去掉-i 2.忽略前N处匹配,从N+1出开始替换 $sed -i ‘s/text/replace/2g’ file #在g前面加入数字N ...
  • sed是stream editor的缩写,种流编辑器,它次处理行...sed主要用来自动编辑一个或多文件,简化对文件的反复操作,编写转换程序等。 (1sed的选项、命令、替换标记 通用格式: sed [options] 'command' ...

    sed是stream editor的缩写,一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

    (1)sed的选项、命令、替换标记

    通用格式:
    sed  [options]  'command'  file(s)

    1.[options]常用选项:

    -n  使用安静(silent)模式。在一般sed的用法中,所有来自stdin的资料一般都会被列出到屏幕,但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者command)才会被列出来。
    -e  允许多点编辑。
    -f  直接将sed的动作写在一个档案内,-f filename则可以执行filename内的sed动作。
    -rsed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
    -i  直接修改读取的档案内容,而不是由屏幕输出。

    2.'command'命令:注意以下命令、标记、元字符集都放在单引号内,
     a\ 在当前行下面插入文本。
     i\ 在当前行上面插入文本。
     c\ 把选定的行改为新的文本。
     d 删除,删除选择的行。
     D 删除模板块的第一行。
     s 替换指定字符
     h 拷贝模板块的内容到内存中的缓冲区。
     H 追加模板块的内容到内存中的缓冲区。
     g 获得内存缓冲区的内容,并替代当前模板块中的文本。
     G 获得内存缓冲区的内容,并追加到当前模板块文本的后面。
     l 列表不能打印字符的清单。
     n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
     N 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。
     p 打印模板块的行。
     P(大写) 打印模板块的第一行。
     q 退出Sed。
     b lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾。
     r file 从file中读行。
     t label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
     T label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾。
     w file 写并追加模板块到file末尾。  
     W file 写并追加模板块的第一行到file末尾。  
     ! 表示后面的命令对所有没有被选定的行发生作用。  
     = 打印当前行号码。  
     # 把注释扩展到下一个换行符以前。  

    常用格式:
    1:sed 's/原字符串/新字符串/' 文件  #只替换第一个

    2:sed 's/原字符串/新字符串/g' 文件 #g表示全部替换
       sed 's/[0-9]/pp/g' test.txt  #将文件test.txt中,[0-9]表示数字的字符,全部替换成pp
       sed 's/a/001/3g' test.txt    #3g表示从第3个开始全部替换 
       
    3:sed '行号c新字符串' 文件   #新字符串替换指定这一行的内容
       sed '2c new ball' test.txt       #用new ball替换(2c表示)第2行的字符内容
       
    4:sed '起始行号,终止行号c新字符串' 文件
       sed '2,6c new pen' test.txt      #用new pen替换(2,6c表示)第2行到第6行的的字符内容

    5:sed -e 命令1 -e 命令2 -e 命令3   #-e选项允许在同一行里执行多条命令
       sed -e 's/a/001/g' -e '2c boy' -e 's:b:002:g' test.txt #用-e在一行中输入多个替换命令

    3:使用变量替换(使用双引号,注意此处是双引号)
        sed -e "s/$var1/$var2/g" filename

    4:在第2行前插入文本
        sed -i '2 i\插入字符串' filename
     
    5:在最后一行插入
        sed -i '$ a\插入字符串' filename

    6:在匹配行前插入
        sed -i '/pattern/ i "插入字符串"' filename
        sed '/^test/i\this is a test line' file  #将 this is a test line 追加到以test开头的行前面
     
    7:在匹配行后插入
       sed -i '/pattern/ a "插入字符串"' filename
       sed '/^test/a\this is a test line' file 将 this is a test line 追加到以test开头的行后面

    8:删除文本中空行和空格组成的行以及#号注释的行
       grep -v ^# filename | sed /^[[:space:]]*$/d | sed /^$/d  
       
       其中:grep -v ^# filename 列出没有#注释符号行的所有内容
       
    9:sed 组合多个表达式
     sed '表达式'|sed '表达式'  等价于:sed '表达式; 表达式'

    10:打印奇数行或偶数行
    方法1:
    sed -n 'p;n' test.txt  #奇数行
    sed -n 'n;p' test.txt  #偶数行
    方法2:
    sed -n '1~2p' test.txt  #奇数行
    sed -n '2~2p' test.txt  #偶数行   

    11:已匹配字符串标记&
    正则表达式“ \w\+ ”,匹配文件中每一个单词,使用 [&]或“&” 替换它,& 对应于之前所匹配到的单词:
    echo this is a test line | sed 's/\w\+/[&]/g'
    [this] [is] [a] [test] [line]
    echo this is a test line | sed 's/\w\+/"&"/g'
    "this" "is" "a" "test" "line"
    所有以192.168.0.1开头的行都会被替换成它自已加localhost:
    sed 's/^192.168.0.1/&localhost/' file
    192.168.0.1localhost:

    12:删除操作:d命令
    删除空白行:
    sed '/^$/d' file

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

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

    删除文件最后一行:
    sed '$d' file

    删除文件中所有开头是test的行:
    sed '/^test/'d file

    1)[options]选项:
    -e:-e选项允许在同一行里执行多条命令
    -n:仅显示处理后的结果;
    -i:替换结果到文件中


    (2)sed的除了命令可单独使用,也可使用替换标记、元字符集配合一起使用
     1)sed替换标记
     g 表示行内全面替换。  
     p 表示打印行。  
     w 表示把行写入一个文件。  
     x 表示互换模板块中的文本和缓冲区中的文本。  
     y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
     \1 子串匹配标记
     & 已匹配字符串标记
     
     2)sed元字符集
     ^ 匹配行开始,如:/^sed/匹配所有以sed开头的行。
     $ 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
     . 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
     * 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
     [] 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。  
     [^] 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
     .... 匹配子串,保存匹配的字符,如s/loveloveable/\1rs,loveable被替换成lovers。
     & 保存搜索字符用来替换其他字符,如s/love/**&**/,love这成**love**。
     \< 匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。
     \> 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
     x\{m\} 重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
     x\{m,\} 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
     x\{m,n\} 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。  
     
     3)sed定界符
     以上命令中字符 / 在sed中作为定界符使用,也可以使用任意的定界符:一般使用/
     sed 's/bbb/c/g' file
     sed 's:test:TEXT:g'
     sed 's|test|TEXT|g'
     定界符出现在样式内部时,需要进行转义:
     sed 's/\/bin/\/usr\/local\/bin/g'  #内部的/bin,需要用\对/号,进行转义
     

    展开全文
  • 正则表达式grep,sed

    千次阅读 2021-05-12 12:02:21
    HTTP一个简单的网页文件service iptables stopecho “I LOVE YOU” > /var/www/html/index.html文本排序sortsort 1.txt排序规则先数字后字母,小写字母在前。sort -t “:” -k3 /etc/passwd用用户的UID排序,按...
  • [Linux]用sed命令删除行或者字符串

    千次阅读 2021-08-12 16:43:08
    sed命令删除行或者字符串 sed命令常用到的两选项: -i : 直接在文件上编辑 (edit files in place) -e[默认选项]:只在命令行输出,而文件不改变(add the script to the commands to be executed) ...
  • 当你在使用文本文件时,很可能需要查找和替换文件中的字符串sed 命令主要用于替换一个文件中的文本。在 Linux 中这可以通过使用 sed 命令和 awk 命令来完成。 sed 命令是什么 sed 命令表示 Stream Editor(流...
  • 删除:d命令$ sed '2d'example-----删除example文件的二行。$ sed '2,$d'example-----删除example文件的二行到末尾所有行。$ sed '$d'example-----删除example文件的最后行。$ sed '/test/'dexample-----删除...
  • sed替换的基本语法为:sed ‘s/原字符串/替换字符串/‘单引号里面,s表示替换,三根斜线中间是替换的样式,特殊字符需要使用反斜线”\”进行转义,但是单引号”‘”是没有办法用反斜线”\”转义的,这时候只要把命令中的单...
  • 1. cut [选项] 文件名-f 列号 #提取第几列(分隔符默认为\t)-d 分隔符 #指定分隔符例如:cut -f 2 a.txt #截取文件a.txt内容的第...-f 1,3 /etc/passwd #截取文件passwd文件的第1列和第三列,以:分割取其中的第一...
  • grep常用于文本搜索。通过自定义的模式(pattern),...grep语法:grep [option] pattern [file]常用option如下:-i:忽略字符的大小-n:显示匹配的行号-c:统计匹配的行数-o:只显示匹配到的内容-q:静默模式,不显示...
  • 原标题:sed 命令查找和替换字符串的 16 示例编译:linux中国-Asche910,作者:Magesh Maruthamuthu当你在使用文本文件时,很可能需要查找和替换文件中的字符串sed命令主要用于替换一个文件中的文本。在 Linux ...
  • -name "*.txt" | xargs grep -P 'regex' -oxargs会将find结果作为grep的输入,防止find结果过多无法处理-P参数表明要应用正则表达式-o表示只输出匹配字符串,这样我们就可以把正则匹配到的结果拿到了。Linux、Mac...
  • 另外,如何将提取的字符串存储在变量中?您将您的问题标记为sed,但您的问题描述并不限制其他工具,因此这里有一个使用awk的解决方案。output = `cmd | awk -F':' '/type: [0-9]+/{print $2}'`或者,您...
  • 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 " '...
  • LinuxSed命令的用法(之替换)

    千次阅读 2021-05-16 04:30:26
    LinuxSed命令的用法(之替换)Linux 操作系统最大的一个好处是它带有各种各样的实用工具。存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具。可以简化关键情况下操作的一个实用 工具是 sed。它是任何...
  • sed 替换文件中的字符串

    千次阅读 2022-01-27 18:07:20
    sed替换 将文件中每行第一次出现的a用字符串A替换,修改后内容会到标准输出,不会修改原文件 $ sed -e 's/a/A/' sed替换.txt AbcABC|abcABC AbcABC|abcABC AbcABC|abcABC g参数 sed 对文件中所有符合的字符串都...
  • 通常在处理文本文件时,您需要在一个或多文件中查找和替换文本字符串sed可以对文件和输入流(如管道)执行基本文本操作。有了sed你可以搜索,查找和替换,插入和删除文字和线条。它支持基本和扩展的正则表达式,...
  • 月 21, 2014 (NO COMMENTS)Linux下批量替换多文件中的字符串的简单方法。用sed命令可以批量替换多文件中的字符串。命令如下:sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`例如:我要把 ...
  • Linux系统中sed命令可以将字符串批量替换,省去了很多麻烦,下面由学习啦小编为大家整理了linux系统中sed命令字符串替换的用法详解,希望对大家有帮助!linuxsed命令字符串替换的用法详解sed替换的基本语法为:sed '...
  • 修改输入文件本身的内容sed 命令是一个流编辑器 (stream editor),可以对输入的文本内容进行处理,文本内容可来自文件或者管道。它默认把处理后的结果打印到标准输出,不修改文件本身内容。在 man sed 里面没有...
  • 1. sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' csv2drds-TF_B_PAYLOG_D.json---指定文件替换,将文件中的CANCEL_TIME替换成CANCEL_RECV_TIME;2.sed -i 's/CANCEL_TIME/CANCEL_RECV_TIME/g' `grep CANCEL_TIME -...
  • linux查找、匹配、更改文件字符串

    千次阅读 2018-12-13 00:42:34
    查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri “IBM” 查找目录下的所有文件中是否含有某个字符串,并且只打印出文件名 find .|xargs grep -ri “IBM” -l 1.正则表达式 (1)正则表达式一般用来...
  • 原标题:使用 sed 命令查找和替换文件中的字符串的 16 示例 | Linux 中国 sed 命令主要用于替换一个文件中的文本。-- Magesh Maruthamuthu当你在使用文本文件时,很可能需要查找和替换文件中的字符串。 命令主要...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,870
精华内容 10,748
关键字:

linux sed 匹配的第一个字符串