Shell编程中linux文本处理三剑客之--sed

1.概念

  • sed(stream editor):行编辑器
  • 是一种在线编辑器,一次处理一行内容
  • 处理时,将当前处理的行存储在临时缓冲区,称为“模式空间”(pattern space)
  • 接着用sed编辑命令处理缓冲区的内容,处理完成后,把缓冲区的内容送往屏幕
  • 接着处理下一行,这样不断重复,直到文件末尾
  • vim(交互式编辑器)
  • 在线编辑器比交互式编辑器快很多,在处理数据流时
  • 注意:
  • 自身不会修改文本文件的原始数据,只会将修改都的数据发送到标准输出上,即控制台上

2.应用

-e script在处理输入时,将script中指定的命令添加到运行的命令中
-f file在处理输入时,将file中指定的命令添加到运行的命令中
-n不要为每个命令生成输出,等待print命令来输出

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  • 标记替换
  • sed 's/test/trial/' b #只替换第一个单词
    在这里插入图片描述
  • sed 's/test/trial/g' b#替换文本中每处出现的内容
    在这里插入图片描述
  • sed 's/test/trial/2' b #替换文本中第二次出现的内容
    在这里插入图片描述
  • sed 's/test/trial/p' c #替换标记会打印包含与命令中执行的模式匹配的行
    在这里插入图片描述
  • sed -n 's/test/trial/p' c #只输出被命令修改过的行
    在这里插入图片描述
  • sed 's/test/trial/w test' c #替换标记后会产生同同样的输出,不过将输出保存到指定的文件中,只有与命令模式匹配的行才会保存到文件中
    在这里插入图片描述
  • 替换字符
  • sed 's/\/bin\/bash/\/bin\/csh/' passwd#将passwd文件中/bin/bash更改为/bin/csh
  • sed 's!/bin/bash!/bin/csh!' passwd#将passwd文件中/bin/bash更改为/bin/csh
  • sed 's#/bin/bash#/bin/csh#' passwd#将passwd文件中/bin/bash更改为/bin/csh

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • 使用地址
  • sed '2s/pig/cat/' a #将第二行中的pig更改为cat
  • sed '2,3s/pig/cat/' a #将第二、三行中的pig更改为cat
    在这里插入图片描述
  • sed '2,$s/pig/cat/' a #将第二行开始到结尾的所有行中的pig更改为cat
    在这里插入图片描述
  • 组合命令,只改变第二行中的内容
    在这里插入图片描述
  • 组合命令,改变第三行到最后的内容
    在这里插入图片描述
  • 删除行
  • sed 'd' d #删除所有的输出,并没有删除文件原有的内容
    在这里插入图片描述
  • sed '2d' d #删除第二行

在这里插入图片描述

  • sed '2,3d' d #删除二三行
    在这里插入图片描述
  • sed '3,$d' d #删除第三行到最后所有的
    在这里插入图片描述
  • sed '/line 1/d' d #删除关键字line 1那一行的内容
    在这里插入图片描述
  • 插入附加文本
  • sed 'i\test line 1' #在指定行前插入新的行
  • sed 'a\test line 1' #在指定行后追加新的行
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述
  • 在第一行之前插入多条内容
    在这里插入图片描述
  • 修改
  • 修改第二行
    在这里插入图片描述
  • 关键字修改第一行
    在这里插入图片描述
  • sed '2,3c the house is big.' file #修改多行内容会将多行变为一行输出
    在这里插入图片描述
  • sed 'y/123/qaz/' file替换单个字符

在这里插入图片描述

  • 转换命令是全局变量,会自动替换文本行中找到的指定字符的所有实例,而不会考虑出现的位置
    在这里插入图片描述
  • sed 'p'打印行

在这里插入图片描述

  • sed -n '/line 2/p' file #禁止其他行,只打印包含匹配文本模式的行
    在这里插入图片描述
  • sed '/line 2/p' file #打印两遍匹配的行
    在这里插入图片描述
  • sed '=' a打印行号
    在这里插入图片描述
  • sed '1,2w westos' file #向文件中写入1,2行
    在这里插入图片描述
  • sed '2r westos' a #读取westos文件中的内容并插入到文件a中的第二行之后
    在这里插入图片描述
  • sed '/line 2/r abcd' file #将abcd文件中的内容插入到文件file的关键字line 2后面
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值