linux - sed常用命令

作者: 小小白的jotter | 来源:发表于2021-05-26 23:35 被阅读0次

    linux - sed常用命令

    sed命令用法

    linux--sed命令

    sed命令详解

    22.Linux sed命令详解

    linux常用操作(八)-sed命令详细说明

    使用语法

    使用规则

    sed 参数 命令 input_file
    

    常用参数:

    参数 作用
    -n 取消默认 sed 输出,仅输出符合条件的行;常与sed 内置命令 p 一起使用
    -i 直接把修改结果写入文件;不用 -i,sed 修改的是内存数据
    -e 多次编辑不需要管道符
    -r 支持扩展正则表达式

    常用命令:

    命令 作用
    a 对文本追加,在指定行后面添加一行;多行时除最后一行外,每行末尾需用 “\n” 续行
    c 用新文本修改(替换)当前行中的文本;多行时除最后一行外,每行末尾需用 “\n” 续行
    i 表示插入文本,在指定行前添加一行或多行文本;多行时除最后一行外,每行末尾需用 “\n” 续行
    d 删除匹配的行
    p 打印匹配行的内容
    s/正则/替换内容/g 匹配正则内容,然后替换内容,结尾 g 表示全局匹配

    sed的正则表达式元字符

    元字符 作用
    \(..\) 保存已匹配的字符
    & 保存查找串以便在替换串中引用
    \< 词首定位符,/<love/:匹配包含以 love 开头的单词的行
    \> 词尾定位符, /love>/:匹配包含以 love 结尾的单词的行
    x\{m\} 连续 m 个 x
    x\{m,\} 至少 m 个 x
    x\{m,n\} 至少 m 个 x,但不超过 n 个 x

    实例

    准备文件

    image-20210521155712934

    打印:p 命令

    打印第二行和第三行。不加 -n 的情况下,sed 会打印全文并把符合条件的行打印两遍,加上 -n 只会打印符合条件的内容

    sed '2,3p' 1.txt
    sed -n '2,3p' 1.txt
    
    image-20210521160515353

    打印以 This 开头的行

    sed -n '/^This/p' 1.txt
    
    image-20210524134328083

    打印含有以 Th 为单词词首的行

    sed -n '/\<Th/p' 1.txt 
    
    image-20210524134753449

    打印含有以 day 为单词词尾的行

    sed -n '/day\>/p' 1.txt
    
    image-20210524135129213

    打印以 Th 开头,ne 结尾的行

    sed -n '/Th.*ne$/p' 1.txt
    
    image-20210524154747555

    打印前四行并且打印行号;= 表示打印行号,用到不同编辑命令时,用 {} ,且不同编辑命令之间用分号分割

    sed -n '1,4{=;p}' 1.txt
    
    image-20210525154521947

    打印除前四行以外的其他行,不知道一共有多少行,可以用 !反选

    sed -n '1,4!p' 1.txt
    
    image-20210525155839610

    打印第一行到匹配到 third 的行

    sed -n '1,/third/p' 1.txt
    
    image-20210525160525612

    打印匹配到 second 的行到匹配到 third 的行

    sed -n '/second/,/third/p' 1.txt
    
    image-20210525160707340

    插入:a 命令和 i 命令

    a 命令和 i 命令的使用方法相同,不同的是 a 命令是在行之后添加内容,i 命令是在行之前插入内容。

    在第一行之后/之前添加 add one

    sed '1a add one' 1.txt
    sed '1i add one' 1.txt
    
    image-20210525162213874

    在第二行到第三行之后/之前添加 add one

    sed '2,3a add one' 1.txt
    sed '2,3i add one' 1.txt
    
    image-20210525162546997

    匹配到 second 的行到匹配到 third 的行之后/之前添加 add one

    sed '/second/,/third/a add one' 1.txt
    sed '/second/,/third/i add one' 1.txt
    
    image-20210525162835196

    在第一行之后/之前添加 add one,add two 两行,用 \n 分隔开

    sed '1a add one\nadd two' 1.txt
    sed '1i add one\nadd two' 1.txt
    
    image-20210525163219648

    在第一行之前加 start,在最后一行之后加 end,对单个文件进行多个操作可以用 -e

    sed -e '1i start' -e '$a end' 1.txt
    
    image-20210525163850423

    删除:d 命令

    删除第一行

    sed '1d' 1.txt
    
    image-20210525171452576

    删除二到三行

    sed '2,3d' 1.txt
    
    image-20210525171539971

    删除匹配到 last 的行

    sed '/last/d' 1.txt
    
    image-20210525171637812

    替换行:c 命令

    将第一行替换为第一行

    sed '1c 第一行' 1.txt
    
    image-20210525171854810

    将匹配到 Monday 的行替换为星期一

    sed '/Monday/c 星期一' 1.txt
    
    image-20210525172028724

    替换字符串:s 命令

    使用方法:s/正则/替换内容/,常与 g 连用表示全局替换

    将全文的 line 替换为 text,不加 g 只替换每一行的第一个 line

    sed 's/line/text/g' 1.txt
    sed 's/line/text/' 1.txt
    
    image-20210525173036379

    s 命令也可以与 p 和 -n 连用,只打印匹配到的行

    sed -n 's/day/DAY/p' 1.txt
    
    image-20210525174314732

    将 is 加上双引号,也就是用 “is” 替换 is。可以用 & 号,当它用在替换字符串中的时候,代表的是原始的查找匹配数据。

    sed 's/is/"&"/g' 1.txt
    
    image-20210525174809535

    相关文章

      网友评论

        本文标题:linux - sed常用命令

        本文链接:https://www.haomeiwen.com/subject/hwglsltx.html