sed

作者: chen_666 | 来源:发表于2021-12-08 17:04 被阅读0次

    [root@localhost ~]# sed [选项] ‘[动作]’ 文件名
    选项:
    -n: 一般 sed 命令会把所有数据都输出到屏幕,如果加入此选择,则只会
    把经过 sed 命令处理的行输出到屏幕。
    -e: 允许对输入数据应用多条 sed 命令编辑。
    -f 脚本文件名: 从 sed 脚本中读入 sed 操作。和 awk 命令的-f 非常类似。
    -r: 在 sed 中支持扩展正则表达式。
    -i: 用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出
    动作:
    a \: 追加,在当前行后添加一行或多行。添加多行时,除最后 一行外,
    每行末尾需要用“\”代表数据未完结。
    c \: 行替换,用 c 后面的字符串替换原数据行,替换多行时,除最后一行
    外,每行末尾需用“\”代表数据未完结。
    i \: 插入,在当期行前插入一行或多行。插入多行时,除最后 一行外,
    每行末尾需要用“\”代表数据未完结。
    d: 删除,删除指定的行。
    p: 打印,输出指定的行。
    s: 字串替换,用一个字符串替换另外一个字符串。格式为“行范围 s/
    旧字串/新字串/g”(和 vim 中的替换格式类似)。

    [root@localhost ~]# sed '2p' student.txt 
    ID Name PHP Linux MySQL Average
    1 Liming 82 95 86 87.66
    1 Liming 82 95 86 87.66
    2 Sc 74 96 87 85.66
    3 Tg 99 83 93 91.66
    

    只输出第二行

    [root@localhost ~]# sed -n '2p' student.txt 
    1 Liming 82 95 86 87.66
    
    [root@localhost ~]# sed '2,4d' student.txt 
    #删除第二行到第四行的数据
    ID Name PHP Linux MySQL Average
    [root@localhost ~]# cat student.txt 
    #但是文件本身并没有修改
    ID Name PHP Linux MySQL Average
    1 Liming 82 95 86 87.66
    2 Sc 74 96 87 85.66
    3 Tg 99 83 93 91.66
    
    [root@localhost ~]# sed '2a hello' student.txt 
    #在第二行后加入 hello
    
    [root@localhost ~]# sed '2i hello \
    > world' student.txt
    #在第二行前插入两行数据
    
    [root@localhost ~]# sed -n '2i hello \ 
    #只查看 sed 命令操作的数据
    > world' student.txt
    

    “-n”只查看 sed 命令操作的数据,而不是查看所有数据。

    字符串替换

    “c”动作是进行整行替换的,如果仅仅想替换行中的部分数据,就要使用“s”动作了。s 动作
    的格式是:

    [root@localhost ~]# sed ‘s/旧字串/新字串/g’ 文件名
    
    [root@localhost ~]# sed '3s/74/99/g' student.txt 
    #在第三行中,把 74 换成 99
    
    [root@localhost ~]# sed '4s/^/#/g' student.txt 
    #这里使用正则表达式,“^”代表行首
    
    [root@localhost ~]# sed -e 's/Liming//g ; s/Tg//g' student.txt 
    #同时把“Liming”和“Tg”替换为空
    
    

    “-e”选项可以同时执行多个 sed 动作,当然如果只是执行一个动作也可以使用“-e”选项,但
    是这时没有什么意义。还要注意,多个动作之间要用“;”号或回车分割

    [root@localhost ~]# sed -e 's/Liming//g 
    > s/Tg//g' student.txt
    

    相关文章

      网友评论

          本文标题:sed

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