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

shell中sed命令用法

一、sed命令解析

1、sed工具概述

Stream EDitor,流式编辑器
- 非交互,基于模式匹配过滤及修改文本
- 逐行处理,并将结果输出到屏幕
- 可实现对文本的输出、删除、替换、复制、剪切、导入、导出等操作

2、命令格式解析

主要用法:
- 格式1:前置命令 | sed [选项] ‘编辑指令’
- 格式2:sed [选项] ‘编辑指令’ 文件 … …
条件,可以是行号或 /正则/:
- 行号可以使用单个数字表示单行
- 或者3,5表示连续的多行
- 省略条件,则默认逐行处理全部文本
- 匹配正则时,需要使用//

常见命令选项:

选项释义
-n屏蔽默认输出
-i直接修改源文件
-r支持扩展正则

二、常见处理操作示例

1、输出文本§

sed -n '/^123/p' file.txt    #仅列出123开头的行
sed -n '4p' file.txt         #输出第4行
sed -n '2,4p' file.txt       #输出第2-4行
sed -n 'p' file.txt          #输出全部
sed -n '/ab/p' file.txt      #输出包含root的行
sed -n '$=' file.txt         #输出文件的行数
sed -n '1~2p' file.txt       #打印奇数行
sed -n '2~2p' file.txt       #打印偶数行

2、删除文本(d)

sed '2,4d' file.txt        #删除第2-4行
sed '/ab/d' file.txt       #删除所有包含ab的行
sed '/ab/!d' file.txt      #删除不包含ab的行,!符号表示取反
sed '/^file/d' file.txt    #删除开头为file的行
sed '$d' file.txt          #删除文件的最后一行
sed '/^$/d' file.txt       #删除所有空行
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)

3、替换关键词(s)

sed 's/ab/AB/' file.txt      #将每行中第一个ab替换为AB
sed 's/123/456/2' file.txt   #将每行中第二个123替换为456
sed 's/123/XXX/g' file.txt   #将所有的123替换为XXX
sed 's/123//g' file.txt      #将所有的123都删除(替换成空字符串)
sed '6,8s/^/#/' file.txt     #为6-8行加注释
sed 's/^#\*/\*/' file.txt    #去掉开头为#*的#号
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)

4、替换行(c)

sed 'c 123456' file.txt                        #将所有行内容替换为123456
sed '/IPADDR/c IPADDR=10.0.0.0' file.txt       #筛选IPADDR关键字的行,替换
sed '/#/c fileroot' file.txt                   #替换包含#号的行替换
sed '3c xxxxx' file.txt                        #替换第三行内容
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)

三、sed文本块处理

1、文本块处理动作

操作符用途指令示例
i行前插入文本2iYY 在第2行之前添加文本行“YY”
4,7iYY 在第4-7行的每一行前添加文本行
a行后插入文本2aYY 在第2行之后添加文本
/^XX/aYY 在以XX开头的行之后添加文本
r导入指令2cYY 将第2行的内容修改为"YY"
w文件另存为|导出文件内容

2、行前插入(i)

sed '2i ######' test.txt            #在第2行前插入单行文本
sed '/aaa/i abc' test.txt           #在包含aaa的行前插入单行文本
sed '/aaa/i abc\n###' test.txt      #在包含aaa的行前插入2行文本,多行需要加换行符\n
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)

3、行后追加(a)

sed '2a ######' test.txt            #在第2行后追加单行文本
sed '/aaa/a abc' test.txt           #在包含aaa的行后追加单行文本
sed '/aaa/a abc\n###' test.txt      #在包含aaa的行后追加2行文本,多行需要加换行符\n
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)

4、导入(r)

sed '2r /root/file.txt' test.txt      #在第二行之后导入file.txt文本到test.txt文件
sed 'r /root/file.txt' test.txt       #在每一行后导入file.txt文本到test.txt文件
sed '/AAA/r /root/file.txt' test.txt  #在包含AAA的行后导入file.txt文本到test.txt文件
注意:此案例只做输出不修改原文件(修改原文件需要加-i选项)

5、导出(w)

sed 'w copy_test.txt' test.txt        #将test文件所有内容另存为一个新文件
sed '/AAA/w AAA_test.txt' test.txt    #将test文件中包含AAA的行另存为新的文件
sed '2,3w line.txt' test.txt          #将test文件的2-3行另存为新的文件
http://www.lryc.cn/news/2309.html

相关文章:

  • 【VictoriaMetrics】VictoriaMetrics启停脚本
  • 高性能网络SIG月度动态:SMC 与 IBM 就扩展协议达成一致,virtio 支持 XDP 新特性
  • 【正点原子FPGA连载】第七章程序固化实验摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】
  • 基于 oss 框架的音频驱动
  • 【golang】如何定制化zap日志库以及如何使用
  • 如何将 Ubuntu 升级到 22.04 LTS Jammy Jellyfish
  • ubuntu20.04安装docker与docker-compose
  • 笔试题-2023-加特兰-数字IC设计【纯净题目版】
  • 动态内存管理
  • Unsupervised Question Answering 简单综述
  • 智慧物流管理系统
  • 单表查询--实例
  • c语言递归 累和 ,累乘积,斐波那契数列,字符串长度
  • 数据与C(ASCII码,char)
  • 第一个C语言代码(visual studin创建调试以及项目文件功能讲解)
  • VIF原理
  • nginx相关反爬策略总结笔记
  • 【Vue3】电商网站吸顶功能
  • HOMER docker版本安装详细流程
  • 【数据结构】单向链表的练习题
  • 我的企业需要一个网站吗?答案是肯定的 10 个理由
  • CHI协议定义的NOC组件
  • Python+Flask+MySQL开发的在线外卖订餐系统(附源码)
  • OpenStack云平台搭建(4) | 部署Placement
  • GNN图神经网络原理解析
  • BI-SQL丨ALL、ANY、SOME
  • 从0到0.1学习 maven(三:声明周期、插件、聚合与继承)
  • 【直击招聘C++】2.5 this指针
  • spark数据清洗练习