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行另存为新的文件
相关文章:
shell中sed命令用法
一、sed命令解析 1、sed工具概述 Stream EDitor,流式编辑器 - 非交互,基于模式匹配过滤及修改文本 - 逐行处理,并将结果输出到屏幕 - 可实现对文本的输出、删除、替换、复制、剪切、导入、导出等操作 2、命令格式解析 主要用法: …...
【VictoriaMetrics】VictoriaMetrics启停脚本
先看结果,启动VictoriaMetrics UI界面可访问...
高性能网络SIG月度动态:SMC 与 IBM 就扩展协议达成一致,virtio 支持 XDP 新特性
高性能网络 SIG(Special Interest Group) :在云计算时代,软硬件高速发展,云原生、微服务等新的应用形态兴起,让更多的数据在进程之间流动,而网络则成为了这些数据流的载体,在整个云时…...
【正点原子FPGA连载】第七章程序固化实验摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
第七章程序固化实验 在前面的几个实验中,我们都是通过JTAG接口将FPGA配置文件和应用程序下载到MPSOC器件中。接下来我们将尝试把程序存储在非易失性存储器中,在上电或者复位时让程序自动运行,这个过程需要启动引导程序(Boot Load…...
LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】
LeetCode-2335. 装满杯子需要的最短总时长【贪心,数学】题目描述:解题思路一:其实像一道数学题目。假设三个杯子x<y<z先分两种情况。第一种:xy<z,答案直接是最大的z。第二种:xy>z。先将x与y互相…...
基于 oss 框架的音频驱动
基于 oss 框架完成系统平台音频驱动的适配。 oss 框架可被多个平台应用,因此 oss 提供 OS 目录来存放平台文件(比如:linux.c),该文件主要提供平台对 oss 框架封装后的相关接口。 以 Linux 为例,入口接口为…...
【golang】如何定制化zap日志库以及如何使用
Zap 日志 前言 本文主要介绍Go语言日志库如何简易定制化,以及如何在开发中使用。 为什么需要日志? 一个产品的诞生一定是因为有需求!新技术大部分都是为了更加便利和实用而诞生的,日志也不例外。日志顾名思义就是对整个项目的事件进行记…...
如何将 Ubuntu 升级到 22.04 LTS Jammy Jellyfish
在本教程中,我们将详细介绍如何将你的 Ubuntu 系统升级到版本 22.04 Jammy Jellyfish,这是最新的长期支持版本。 Ubuntu 22.04 LTS Jammy Jellyfish 将于 2022 年 4 月 21 日发布。它是下个两年一次的长期支持(LTS)版本,因此值得注意,而且现在 Ubuntu 21.10 的用户可以升…...
ubuntu20.04安装docker与docker-compose
安装docker 查看系统发行版本 cat /proc/version1、更新apt包 sudo apt-get update2、安装必备的软件包以允许apt通过 HTTPS 使用存储库(repository): sudo apt-get install ca-certificates curl gnupg lsb-release3、添加Docker官方版本…...
笔试题-2023-加特兰-数字IC设计【纯净题目版】
回到首页:2023 数字IC设计秋招复盘——数十家公司笔试题、面试实录 推荐内容:数字IC设计学习比较实用的资料推荐 题目背景 笔试时间:2022.07.27应聘岗位:数字电路设计工程师(SoC) - 2023届笔试时长:90min笔试平台:nowcoder牛客网题目类型:问答题(11道)主观评价 难易…...
动态内存管理
目录1.为什么要动态内存分配2.动态内存函数malloc](https://cplusplus.com/reference/cstdlib/malloc/?kwmalloc)和[freecallocrealloc3.使用动态内存要注意的几点对NULL的解引用对同一块动态内存多次释放free非动态开辟的内存使用free释放一块动态开辟内存的一部分一个函数中…...
Unsupervised Question Answering 简单综述
Unsupervised Question Answering by Cloze Translation, ACL 2019 随机从文本中抽取noun phrases或者named entity作为答案将答案部分mask掉,生成cloze question利用无监督翻译,将cloze question转化为natural question 缺点: 直接利用原句…...
智慧物流管理系统
智慧物流运用物联网、大数据、云计算、人工智能等技术优化物流决策过程。智慧物流获取、分析物流信息并做出决策,从商品源开始实时跟踪与管理,保证信息流快于商品流,实现信息与物质快速、高效、流畅地运转,集自动化、数字化、网络…...
单表查询--实例
#素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 >CREATE TABLE worker ( >部门号 int(11) NOT NULL, >职工号 int(11) NOT NULL, >工作时间 date NOT NULL, >工资 float(8,2) NOT NULL, >政治…...
c语言递归 累和 ,累乘积,斐波那契数列,字符串长度
目录 递归使用场景 1:使用递归的方式计算 Sn123..100 2:计算 n!n*(n-1)*(n-2)*......*1; 3:计算输出斐波那契数列前20项,并按每行4个数的格式输出(2019年) 4: 用递归和非递归两种方式编写函数strlength()。该函数…...
数据与C(ASCII码,char)
目录 一.ASCII码讲解 二.非打印字符(转义字符) 三.扩展小知识 一.ASCII码讲解 char类型用于存储字符,从技术层面看,char时整数类型,因为char类型实际上存储的是整数而不是字符。计算机使用数字编码来处理字符&…...
第一个C语言代码(visual studin创建调试以及项目文件功能讲解)
这里我主要使用visual Studio进行编程 目录 一.创建项目 二.编写代码 1.代码编写 2.代码分析 3.main() 4.注释符 5.{} 花括号 6.声明 7.赋值 8.printf()函数 9.return 0; 一.创建项目 这里大家可能会比较疑惑,为啥都是C,没看见C的项目&…...
VIF原理
文章目录一、VIF公式和原理对于R方一般回归模型皮尔逊相关系数中的方差VIF原理:一、VIF公式和原理 所谓VIF方法,计算难度并不高。在线性回归方法里,应用最广泛的就是最小二乘法(OLS),只不过我们对每个因子…...
nginx相关反爬策略总结笔记
引言 互联网站点的流量一部分由人类正常访问行为产生,而高达30%-60%的流量则是由网络爬虫产生的,其中一部分包含友好网络爬虫,如搜索引擎的爬虫、广告程序、第三方合作伙伴程序、Robots协议友好程序等;而并非所有的网络爬虫都是友好的&#x…...
【Vue3】电商网站吸顶功能
头部分类导航-吸顶功能 电商网站的首页内容会比较多,页面比较长,为了能让用户在滚动浏览内容的过程中都能够快速的切换到其它分类。需要分类导航一直可见,所以需要一个吸顶导航的效果。 目标:完成头部组件吸顶效果的实现 交互要求 滚动距离大…...
SAP FICO财务账期管理实战:关键配置与月结操作指南
1. SAP FICO财务账期管理基础概念 财务账期管理是SAP FICO模块中最基础也最重要的功能之一。简单来说,它就像财务部门的"门禁系统",控制着哪些会计凭证能在特定时间段被录入系统。想象一下,如果超市收银台没有营业时间限制…...
SGLang-v0.5.6实战体验:5种预装镜像,哪个最适合你的项目?
SGLang-v0.5.6实战体验:5种预装镜像,哪个最适合你的项目? 选型会上,技术负责人又抛出了那个经典问题:“我们到底用哪个环境来部署SGLang?” 会议室里立刻热闹起来。有人坚持用PyTorch 2.1,说它…...
3步搞定B站音频提取:BilibiliDown开源工具的终极指南
3步搞定B站音频提取:BilibiliDown开源工具的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi…...
蓝桥杯 电池分组
...
若依前后端分离系统生产环境部署:从零到上线的保姆级教程
若依前后端分离系统生产环境部署实战指南 引言:为什么选择若依框架? 对于刚接触企业级开发的新手来说,若依(RuoYi)框架无疑是一个绝佳的起点。这个基于Spring Boot和Vue.js的前后端分离架构,不仅提供了完善的权限管理、代码生成等…...
java毕业设计基于springboot+vue的电影院座位管理系统
前言 该系统旨在实现电影院座位的高效管理,包括座位预订、售票、座位状态实时监控等功能。通过该系统,电影院可以提高售票效率,优化座位使用率,同时为顾客提供便捷的购票体验。 一、项目介绍 开发语言:Java 框架&…...
3步实现会呼吸的界面边界:让表单交互体验提升300%的动态效果
3步实现会呼吸的界面边界:让表单交互体验提升300%的动态效果 【免费下载链接】motion-primitives UI kit to make beautiful, animated interfaces, faster. Customizable. Open Source. 项目地址: https://gitcode.com/gh_mirrors/mo/motion-primitives 在现…...
Umi-OCR插件技术深度解析:如何构建高效的文字识别工作流
Umi-OCR插件技术深度解析:如何构建高效的文字识别工作流 【免费下载链接】Umi-OCR_plugins Umi-OCR 插件库 项目地址: https://gitcode.com/gh_mirrors/um/Umi-OCR_plugins Umi-OCR插件库为文字识别任务提供了多样化的解决方案,涵盖了从本地CPU加…...
别再手动算置信区间了!ArcGIS里用Python脚本批量计算FVC,效率提升90%
遥感植被覆盖度自动化计算:用Python脚本解放ArcGIS生产力 当面对数百景遥感数据需要计算植被覆盖度(FVC)时,手动操作ArcGIS界面不仅耗时费力,还容易因人为失误导致结果不一致。我曾在一个省级生态评估项目中,需要处理3年共36期Lan…...
Ubuntu 22.04 换源+Docker安装+镜像加速
Ubuntu 22.04 换源Docker安装镜像加速 前言 本文针对 Ubuntu 22.04 LTS 系统,先更换国内镜像源提升下载速度,再完成 Docker 引擎与 Compose 插件安装,最后配置 Docker 国内镜像加速,全程无报错、可直接复制执行,适配 V…...
