Linux中三剑客命令-sed命令简单了解

本文介绍了Linux中的sed命令,详细讲解了其执行原理、常用指令,包括查询、删除、增加和修改操作。通过实例展示了如何按照行号和内容匹配进行信息筛选、删除,以及如何在特定行插入和修改信息。同时,文章还提到了使用sed命令时禁止参数混用的情况,特别是-i参数用于实际修改文件时的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

了解sed的大致作用

  • 可以查找过滤除指定的信息
  • 擅长编辑文件内容,对文件进行操作
简单了解sed执行原理
  • sed命令执行过程核心原则:找什么信息、做什么事情

  • 找什么信息 == 定义查询的条件

  • 做什么事情 == 操作执行命令

  • 执行原理过程:

在这里插入图片描述

  • 命令语法结构:# sed [参数] ‘条件 指令’ 文件信息
    如何定义条件:根据行号,根据内容 与 正则信息
    如何定义指令:满足前面条件的信息处理的指令(比如添加,删除)

sed常用指令

  • 查询操作

    模板
    在这里插入图片描述

    • 按照行号匹配
      1. 行号信息匹配:# sed '3p' test.txt - - - 3代表第三行,p(print代表显示第三行信息
      在这里插入图片描述
      这里显示已经取到第三行信息,因为默认输出的原因其他内容也会显示出来,
      加个参数就好了,加 -n 默认只显示匹配到的内容,看一下效果吧
      在这里插入图片描述
      2. 多行信息匹配:# sed -n '2,4p' test.txt - - - 表示2到第四行内容都显示

      在这里插入图片描述

    3. 多行信息匹配(不连续行):# sed -n '3p;4p' test.txt - - - 表示第三行和第四行内容都显示
    在这里插入图片描述

    • 按照字符信息匹配
      1. 单行匹配信息:# sed -n '/456/p' test.txt - - - 表示匹配文件中有 456字符信息的行 显示出来
      在这里插入图片描述
      2. 多行匹配信息:# sed -n '/456/,/abc/p' test.txt - - - 表示匹配文件中带有 456到abc 的行,之间的行也显示出来
      在这里插入图片描述
      3. 多行匹配信息(不连续行):# sed -n '/456/p;/abc/p' test.txt - - -表示匹配文件中有456字符的行和有adc字符的行
      在这里插入图片描述
  • 删除操作

    • 按照行进行删除操作
      1. 单行删除操作:#sed -i '3d' test.txt - - - 删除指定第6行 - - - 参数: -i 是对文件做真实修改,没有加 -i 都是在模式空间做操作,并没有真的对文件做修改。
      在这里插入图片描述
      2. 多行删除操作:# sed -i '1,3d' test.txt - - - 删除第一行 到 第三行所有内容
      在这里插入图片描述
      3. 多行删除操作:# sed -i '1d;3d' test.txt - - - 删除第一行 与 第三行内容
      在这里插入图片描述

    • 根据字符进行删除操作
      1. 按照字符删除行操作:# sed -i '/abc/d' test.txt - - - 匹配到有 adc 字符串的行并且删除
      在这里插入图片描述
      2. 按照字符删除多行操作:# sed -i '/123/,/abc/d' test.txt - - - 匹配到有123 到 abc 字符的行,都进行删除
      在这里插入图片描述
      2.1 如果文件内容下面有和 “123” 一样的内容会怎么样?(这里在源模板上多添加一些信息)
      解:看到,要是有一样的开头条件(123),后面在出现一样的字符内容,也会跟着匹配,直到匹配到有结束条件(abc)的字符 在这里插入图片描述
      2.2 如果文件内容有和 “abc” 一样的内容又会怎么样呢?
      解:实验中可以看文件内容中有 结束条件(abc)的,是不会匹配的 在这里插入图片描述
      2.3 如果文件内容有和 “123” “abc” 同样字符的内容而又怎么样呢?
      解:图片中可以看到,要是有同样的匹配条件,就都会匹配出来 在这里插入图片描述

      3. 按照字符删除多行操作(不连续删除):# sed -i '/123/d;/abc/d' test.txt
      在这里插入图片描述

  • 增加操作

    • 根据行号添加操作
      1. 指定行添加信息:# sed '1atest' test.txt - - - 表示在第一行下面添加 test 的字符 。a:表示在指定行下面一行添加, i:表示在指定行上面添加信息
      下面有些操作加 -n 不太好看的到效果,所有有些操作就不加了
      加-n 取消默认输出效果看不到
      2. 指定多行添加操作:# sed '1,3atest' test.txt - - - 表示在第一行到第三行下面都添加test 字符,
      在这里插入图片描述
      3. 指定多行添加操作:# sed -e '1itest' -e '2atest1' test.txt- - - 表示在第一行上面添加text 字符,在第二行下面添加 test1 字符内容。
      在这里插入图片描述
      4. 指定行添加多个信息:# sed '1atest\ntest222' test.txt- - - 表示在第一行下面添加两个信息,使用\n分隔符,就可以换行
      在这里插入图片描述
  • 修改操作

    • 指定行修改操作
      1. 单行内容修改信息:# sed '1s#4#test#g' test.txt- - - 将第一行中的4 替换成test
      在这里插入图片描述
      2. 多行内容修改信息:# sed '3,4s#a#xxx#g' test.txt- - - 将3行和4行相同内容a 替换成xxx
      在这里插入图片描述

禁止参数一起使用

  • sed -ni '/123/d' test.txt - - - 真实修改文件内容,不显示默认输出,删除带有123的字符,可是现实不是这样的,而是
    在这里插入图片描述
    它将所有东西都删除了,😐😢 ,所以禁止 参数 n 于 i 一起使用,最好在使用 i 真实修改文件内容时,给文件备份,也有快捷的方法:sed i.bak '/123/d' test.txt - - -这样就会备份一个文件修改前的备份,即便修改后能通过此文件恢复,看一下效果
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值