当前位置: 首页 > news >正文

Linux sed

文章目录

  • 1. 基本功能
  • 2.sed替换s
    • sed配合grep和管道操作符的例子
  • 3.sed中的删除和添加
    • 3.1 d删除
    • 3.2 a i添加
      • 添加多行
  • 4.sed行替换
      • 替换包含某字符的行
  • 5.单字符替换 y
  • 6. p打印命令
    • 打印含有目标字符的行
      • sed中包含多个指令,使用{}
  • 7.sed w 写入文件
  • 8.sed r 读取文件
  • 9.sed q 退出脚本——及时终止命令执行
  • 10.综合实例
    • 批量指令sed指令

1. 基本功能

  • 对文本中的某一行做增删改查
sed [optionsl'addrcommand[flags]' filename
//addr是指令操作的行,不写默认是全部
//command是操作指令,添加、修改等
例如:sed -e '1s/test/trial/g' data.txt
1为地址,表示操作data.txt的第一行;
s为cmd,表示替换;**命令选项**
-e:直接在vim的命令行模式上进行sed动作编辑,此为默认选项,缺省也可以。但是文件本身不被修改,只是会将执行后的结果打印;
-f:将sed的动作写在一个文件内,用-f filename执行filename内的sed动作;
-i:直接修改文件内容;
-n:只打印模式匹配的行;
-r:支持扩展表达式:**sed常用内部命令**
a 在匹配后面添加
i 在匹配前面添加
p 打印
d 删除
S 替换
c 更改
y 转换**flags**
相关描述参考下图

在这里插入图片描述

2.sed替换s

[address]s/pattern/replacement/flagssed指令只有-i下才会直接修改文件flag标记中的n表示将第几个目标字符做替换,如果在某一行中只有1个目标字符,则当n>1时,替换不生效。
  • 如下图所示,使用p这个flag的时候必须配合-n,这样会只打印匹配上的行。通常用于原文件行数过多,只想看操作的行的时候。
    在这里插入图片描述
  • 使用w flag,可以将匹配上的行输出到一个文件,如下图所示,输出到了data1.txt
    在这里插入图片描述
  • 使用反斜线对特殊字符做转义
    在这里插入图片描述

sed配合grep和管道操作符的例子

在这里插入图片描述

3.sed中的删除和添加

3.1 d删除

sed 'd' data.txt
sed d删除
-所有
sed '3d' data.txt
- 3行
sed'1,3d' data.txt
-1到3行
-sed '2,4d' data.txt
-2到4行

在这里插入图片描述

3.2 a i添加

sed a和i添加
sed '3i This is an inserted line.' data.txt
//在第3行前面添加sed '3a This is an appended line. data.txt
//在第3行后面添加

在这里插入图片描述

添加多行

sed '1i This is one line of new text.\
This is another line of new text. data.txt

在这里插入图片描述

4.sed行替换

sed c行替换
sed '3c This is a changed line of text.' data.txt
//无视第三行的内容,直接进行行替换,源文件没有被替换,只是打印出来替换结果了。

在这里插入图片描述

替换包含某字符的行

sed '/number 3/c\
> This is a changed line of text.' data.txt
  • 上面将一个命令拆多行写了,下面是一行完成的。都是将含有number 3字符的行进行整行替换
    在这里插入图片描述

5.单字符替换 y

sed y转换脚本
单个字符一对一替换
sed 'y/123/789/" data.txt
  • 将123替换为789,虽然123写在了一起,但是也是按照单个字符处理的,不是按照123三个字符来理解。
    在这里插入图片描述
  • 继续添加一个l,也是一样,不论在什么位置,都会进行单个字符替换
    在这里插入图片描述
echo "This 1 is a test of 1 try." | sed 'y/123/456/'
This 4 is a test of 4 try

在这里插入图片描述

6. p打印命令

sed -n '/number 3/p' data.txt
用-n选项和p命令配合使用,我们可以禁止输出其他行,只打印包含匹配文本模式的行。 如果需要在
修改之前查看行,也可以使用打印命令,比如与替换或修改命令一起使用。可以创建一个脚本在修改行之前显示该行

打印含有目标字符的行

在这里插入图片描述

sed中包含多个指令,使用{}

sed -n '/3/{
>p
>s/line/test/p
> }' data.txt
This is line number 3.
This is test number 3.
查找包含数字3的行,然后执行两条命令。首先,脚本用p命令来打印出原始行;然后它用s命令替换文本,并用p标记打印出替换结果。输出同时显示了原来的行文本和新的行文本

在这里插入图片描述

7.sed w 写入文件

sed '1,2w test.txt' data.txt
//将data.txt中的1~2行写入test.txt
//上述指令没有-n,还是会打印data.txt的内容sed -n '/demo/w demo.txt' data.txt
//将包含demo的行打印到demo.txt,-n加上就不会打印无关行了。

在这里插入图片描述

8.sed r 读取文件

sed '3r data1.txt' data.txt
sed 命令会将 filename 文件中的内容插入到 address 指定行的后面

在这里插入图片描述

 sed '$r data1.txt' data.txt 插入到文件末尾

在这里插入图片描述

9.sed q 退出脚本——及时终止命令执行

sed '2q' test.txt
  • 使用q只打印前2行
    在这里插入图片描述
sed '/number/{s/number/num/;q}' data.txt
//包含多个命令用{},多个命令之间使用;分隔
//带q则执行完一次替换后指令就终止,不带则会针对全部行做替换

在这里插入图片描述

10.综合实例

sed '1...' data.txt
//直接指定行号
sed '1,3...' data.txt
//指定行的范围
sed '1,$...' data.txt
//从某行开始到最后一行
sed '/zyr/s/bash/csh/' /etc/passwd
//使用字符匹配,找到包含zyr的行做替换
//使用正则匹配做替换
sed '{s/h[0-9]/\<&\>/1; s/h[0-9]/\<&\>/2}' test.txt
//此处的&在sed语法中表示匹配上的字符本身
//{}表示对一行内容做多个操作,多个操作之间使用;分割

在这里插入图片描述

  • 为了简化指令,可以将操作对象往前提,这样只写一次就行
    在这里插入图片描述
    其实sed的指令在vim中都可以使用命令模式直接敲然后回车执行,但是不利用批量指令。
    这时就可以创建一个sed的脚本来操作目标文本!!

批量指令sed指令

创建sed.sh,将指令写入;使用-f调用指令脚本
在这里插入图片描述
下图为sed.sh脚本中的内容,这样可以分行写,很清晰。
在这里插入图片描述

http://www.lryc.cn/news/338296.html

相关文章:

  • 【MySQL】MySQL在Centos 7环境安装
  • 【CSS】一篇文章讲清楚screen、window和html元素的位置:top、left、width、height
  • 铸造大型基础平板的结构应该怎样设计
  • 医院预约系统微信小程序APP前后端
  • springboot数字化智慧城市管理系统源码
  • 【鸿蒙开发】第二十一章 Media媒体服务(一)
  • 【QT教程】QT6 Web应用实战
  • (我的创作纪念日)[MySQL]数据库原理7——喵喵期末不挂科
  • 普乐蛙VR航天体验馆设备VR太空飞船VR元宇宙展厅
  • 基于torch的图像识别训练策略与常用模块
  • 微信小程序制作圆形进度条
  • 大模型(Large Models):探索人工智能领域的新边界
  • 缓存相关知识总结
  • Mapmost Alpha:开启三维城市场景创作新纪元
  • 【大模型完全入门手册】——引言
  • 在 Vue 3 中使用 Axios 发送 POST 请求
  • 【LeetCode刷题记录】189. 轮转数组
  • 1.open3d处理点云数据的常见方法
  • https和http有什么区别,为什么要用https
  • 微前端框架主流方案剖析
  • 安卓逆向之-Xposed RPC
  • 【排序 贪心】3107. 使数组中位数等于 K 的最少操作数
  • 预览pdf文件和Excel文件
  • RT-thread线程间同步:事件集/消息队列/邮箱功能
  • 【机器学习】一文掌握机器学习十大分类算法(上)。
  • 策略模式(知识点)——设计模式学习笔记
  • Python学习从0开始——专栏汇总
  • 【iOS ARKit】Web 网页中嵌入 AR Quick Look
  • Java基础-知识点03(面试|学习)
  • 【GIS学习笔记】ArcGIS/QGIS如何修改字段名称、调整字段顺序?