shell编程-字符截取命令-sed命令

文章目录

    • 前言
    • 1. sed的使用
      • 1.1 打印
      • 1.2 打印改进版(-n)
      • 1.3 删除行
      • 1.4追加
      • 1.5 插入
      • 1.6 行替换
      • 1.7 字串替换(-i)
      • 1.8 多条命令同时执行(-e)
    • 2. 总结

前言

  • sed是一种几乎包括再所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。
  • cut awk 是进列截取,grep是行截取的。
    vim也是编辑器,sed也是一个编辑器,有了vim为什么还要学习sed命令那??? vim只能修改文件。Sed不光可以修改文件的内容,还可以直接修改命令的结果。在shell编程中比较重要。也可以进行管道符操作。

1. sed的使用

命令: sed [选项] '[动作]' 文件名
选项:
      -n         一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕。
      -e          允许对输入数据应用多条sed命令编辑
      -i            用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出

动作:
      a \          追加,再当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要“\”代表数据未完结
      c \           行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。
       i \            插入,再当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结
      d              删除,删除指定的行。
      p              打印,输出指定的行。
      s              字串替换,用一个字符串替换另外一个字符串。格式为"行范围s/旧字串/新字串/g"(和vim中的替换格式类似)。

开始举个栗子:

1.1 打印

  • 命令: sed '2p' student
    作用:参看文件第二行
    shell编程-字符截取命令-sed命令_第1张图片
    解决出现的问题: 把第二行输出了两遍。又把整个文件都输出了一遍。只想看到第二行不想看多余数据,这是就要用-n。

1.2 打印改进版(-n)

  • 命令: sed -n '2p' student
    作用:上面的改进版本,不让他显示多余的行
    shell编程-字符截取命令-sed命令_第2张图片shell编程-字符截取命令-sed命令_第3张图片

1.3 删除行

注意: Sed命令只要不加-i选项,它的所有的操作都不影响文件本身,只是影响的是屏幕输出。

  • 命令:sed ‘2,4d’ student
    作用:删除第二行到第四行的数据,但不修改文件本身
    shell编程-字符截取命令-sed命令_第4张图片
    shell编程-字符截取命令-sed命令_第5张图片
    提示: 如果没有加-i选项的话,操作的仅仅是文件的输出,而不是文件本身的内容。

1.4追加

  • 命令: sed '2a hello' student
    作用:在第二行后追加hello
    shell编程-字符截取命令-sed命令_第6张图片

1.5 插入

命令: sed '2i hello' \ world' student
作用:在第二行下面插入两行数据
shell编程-字符截取命令-sed命令_第7张图片

1.6 行替换

  • 命令: sed '2c No such person' student
    作用:数据替换
    shell编程-字符截取命令-sed命令_第8张图片

1.7 字串替换(-i)

  • 格式: sed '行范围s/旧字符串/新字串/g' 文件名
    命令: sed '3s/100/60/g' student
    作用:在第三行中,把74换成99shell编程-字符截取命令-sed命令_第9张图片
    shell编程-字符截取命令-sed命令_第10张图片

1.8 多条命令同时执行(-e)

  • 命令: sed -e 's/zhang/qian/g;s/li/guo/g' student
    作用:把zhang替换成qian,把li替换成guo,-e 允许对输入数据应用多条sed命令编辑
    shell编程-字符截取命令-sed命令_第11张图片

2. 总结

  • sed主要操作的是处理命令的输出,不需要写入文件 (因为加入-i选项会导致直接修改源文件,从而会导致不安全) ,如果要写入文件,最好还是使用vim编译器来进行修改。

你可能感兴趣的:(shell编程)