Linux sed 命令详解
Linux sed(Stream Editor)是一种强大的文本处理工具,它在命令行中执行对文本进行搜索、替换和编辑等操作。sed的设计理念是按行处理文本,可以将输入文本逐行读取并应用指定的操作,然后输出结果。
sed命令有多种选项和功能,下面将详细介绍其常用的用法和实例。
-
替换文本:
使用s/old/new/模式实现替换操作,将输入文本中的"old"字符串替换为"new"字符串。例如:$ sed 's/foo/bar/' input.txt这将把文件input.txt中的所有"foo"替换为"bar"。
sed支持全局替换,只需在
s/old/new/的第一个斜杠后加入g标志。例如:$ sed 's/foo/bar/g' input.txt这将替换所有出现的"foo"为"bar"。
-
删除行:
使用d命令删除匹配模式的行。例如:$ sed '/pattern/d' input.txt这将删除文件input.txt中匹配模式"pattern"的所有行。
-
插入和追加文本:
使用i命令在指定行前插入文本,使用a命令在指定行后追加文本。例如:$ sed '3i\This is line 3' input.txt这将在文件input.txt的第三行前插入文本"This is line 3"。
$ sed '3a\This is line 4' input.txt这将在文件input.txt的第三行后追加文本"This is line 4"。
-
打印文本:
使用p命令打印匹配模式的行。例如:$ sed -n '/pattern/p' input.txt这将打印文件input.txt中匹配模式"pattern"的所有行。
如果想要打印所有行,可以使用以下命令:
$ sed -n 'p' input.txt -
文件编辑:
使用-i选项实现原地编辑,即直接修改源文件而不产生新的输出文件。例如:$ sed -i 's/foo/bar/' input.txt这将直接在输入文件input.txt中将所有的"foo"替换为"bar"。
-
制定处理范围:
可以使用行地址指定sed命令的处理范围。例如,使用数字表示行号:$ sed '2,5d' input.txt这将删除文件input.txt的第二行到第五行之间的内容。
也可以使用正则表达式指定处理范围。例如,处理以"start"开始和以"end"结束之间的文本:
$ sed '/start/,/end/d' input.txt这将删除文件input.txt中匹配模式"start"和"end"之间的文本。
-
多重编辑命令:
可以使用分号将多个sed命令组合在一起。例如:$ sed 's/foo/bar/; s/abc/xyz/' input.txt这将先将文件input.txt中的所有"foo"替换为"bar",然后将所有"abc"替换为"xyz"。
也可以将多个编辑命令写入一个脚本文件,并通过
-f选项来执行。例如,将编辑命令存储在script.sed文件中:$ sed -f script.sed input.txt -
指定行号进行操作:
使用数字表示的行号(如1、2、3等)可以指定要对其进行操作的行。例如,以下命令将替换文件input.txt中的第二个"foo"字符串:$ sed '2s/foo/bar/' input.txt -
引用特殊字符:
在替换操作中,如果要引用包含特殊字符的字符串,可以使用反斜杠进行转义。例如,将"$100"替换为"$200"的命令如下:$ sed 's/\$100/\$200/' input.txt -
根据正则表达式匹配和替换:
可以使用正则表达式作为sed命令中的匹配模式。例如,替换所有以数字开头的行为空行:$ sed 's/^[0-9].*$/ /' input.txt -
仅显示替换的行:
使用-n选项可以禁止sed的默认输出,然后使用p命令打印匹配行。例如,只显示替换操作后的行:$ sed -n 's/foo/bar/p' input.txt -
处理多个文件:
使用多个文件名作为sed命令的参数,可以对多个文件进行批量处理。例如,将文件1.txt和2.txt中的所有"foo"替换为"bar":$ sed 's/foo/bar/' 1.txt 2.txt -
反向引用匹配:
使用正则表达式的捕获组和反向引用,可以在替换操作中使用匹配的内容。例如,将文件input.txt中的"a123b"替换为"b123a":$ sed 's/\(a\)\([0-9]\+\)\(b\)/\3\2\1/' input.txt -
删除空白行:
使用以下命令可以删除文件中的空白行:$ sed '/^\s*$/d' input.txt -
执行脚本文件:
创建一个包含sed命令的文本文件,并使用-f选项来执行该脚本文件。例如,将编辑命令存储在script.sed文件中并执行:$ sed -f script.sed input.txt
相关文章:
Linux sed 命令详解
Linux sed(Stream Editor)是一种强大的文本处理工具,它在命令行中执行对文本进行搜索、替换和编辑等操作。sed的设计理念是按行处理文本,可以将输入文本逐行读取并应用指定的操作,然后输出结果。 sed命令有多种选项和…...
算法通关村——如何使用中序和后序来恢复一棵二叉树
通过序列构造二叉树 给出以下三个二叉树遍历的序列: (1) 前序: 1 2 3 4 5 6 8 7 9 10 11 12 13 15 14 (2) 中序: 3 4 8 6 7 5 2 1 10 9 11 15 13 14 12 (3) 后序: 8 7 6 5 4 3 2 10 15 14 13 12 11 9 1 前中序复原二叉树 所需序列 (1) 前序: 1 2 3 4 5 6 8 7 9 10 …...
TypeScript的基本类型
typescript的定义 以JavaScript为基础构建的语言是js的超集可以在任何支持js的平台执行ts 拓展了js并增加了类型Ts不能被js解析器直接执行。 TS> 编译为js 执行的还是js. js 不易于维护,而ts易于维护。 可提高项目的可维护性。 类似less、sass 完善的语法写 样…...
Docker实战-如何去访问Docker仓库?
导语 仓库在之前的分享中我们介绍过,它主要的作用就是用来存放镜像文件,又可以分为是公共的仓库和私有仓库。有点类似于Maven的中央仓库和公司内部私服。 下面我们就来介绍一下在Docker中如何去访问各种仓库。 Docker Hub 公共镜像仓库 Docker Hub 是Docker官方提供的最…...
【力扣】722. 删除注释
以下为力扣官方题解,及本人代码 722. 删除注释 题目题意示例 1示例 2提示 官方题解模拟思路与算法复杂度 本人代码Java提交结果:通过 题目 题意 给一个 C C C 程序,删除程序中的注释。这个程序 s o u r c e source source 是一个数组&a…...
篇二:工厂方法模式:灵活创建对象
篇二:“工厂方法模式:灵活创建对象” 开始本篇文章之前先推荐一个好用的学习工具,AIRIght,借助于AI助手工具,学习事半功倍。欢迎访问:http://airight.fun/。 另外有2本不错的关于设计模式的资料ÿ…...
Python(六十二)字典元素的增、删、改操作
❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…...
从零学算法138
**138.**给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节…...
CTF PWN练习之返回地址覆盖
今天进行的实验是CTF PWN练习之返回地址覆盖,来体验一下新的溢出方式。 学习地址覆盖之前还有些小知识需要掌握,不然做题的时候你肯定一脸懵逼,首先是函数调用约定,然后还要知道基本的缓冲区溢出攻击模型。 函数调用约定 函数调用约定描述…...
OpenCV中图像变换
一、介绍 transform():Transposes a matrix. perspectiveTransform():Performs the perspective matrix transformation of vectors. warpAffine():Applies an affine transformation to an image. warpPerspective():Applies a p…...
wordpress发表文章时报错: rest_cannot_create,抱歉,您不能为此用户创建文章(已解决)
使用wordpress 的rest api发布文章,首先使用wp-json/jwt-auth/v1/token接口获取token,然后再使用/wp-json/wp/v2/posts 接口发表文章,但是使用axios请求时,却报错: 但是,我在postman上却是可以的࿰…...
数学建模学习(7):Matlab绘图
一、二维图像绘制 1.绘制曲线图 最基础的二维图形绘制方法:plot -plot命令自动打开一个图形窗口Figure; 用直线连接相邻两数据点来绘制图形 -根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定…...
CSS中所有选择器详解
文章目录 一、基础选择器1.标签选择器2.类选择器3.id选择器4.通配符选择器 二、复合选择器1.交集选择器2.并集选择器 三、属性选择器1.[属性]2.[属性属性值]3.[属性^属性值]4.[属性$属性值]5.[属性*属性值] 四、关系选择器1.父亲>儿子2.祖先 后代3.兄弟4.兄~弟 五、伪类选择…...
STM32 低功耗学习
STM32 电源系统结构介绍 电源系统:VDDA供电区域、VDD供电区域、1.8V供电区域、后备供电区域。 器件的工作电压(VDD)2.0~3.6V 为了提高转换精度,给模拟外设独立供电。电压调节器为1.8V供电区域供电,且1.8V供电区域是电…...
HCIP--云计算题库 V5.0版本
在国家政策的支持下,我国云计算应用市场发展明显加快,越来越多的企业开始介入云产业,出现了大量的应用解决方案,云应用的成功案例逐渐丰富,用户了解和认可程度不断提高,云计算产业发展迎来了“黄金机遇期”…...
小白到运维工程师自学之路 第六十五集 (docker-compose)
一、概述 Docker Compose 的前身是 Fig,它是一个定义及运行多个 Docker 容器的工具。可以使用YAML文件来配置应用程序的服务。然后,使用单个命令,您可以创建并启动配置中的所有服务。Docker Compose 会通过解析容器间的依赖关系(…...
量子机器学习
量子机器学习(QML)是结合量子计算和机器学习的交叉领域,旨在利用量子计算的优势来改进机器学习算法的性能。下面是一些有关量子机器学习的学习资源和技术应用: 学术论文和研究资料: ArXiv.org:在ArXiv的量子物理和机器学习类别中&…...
WEB集群——tomcat
1. 简述静态网页和动态网页的区别。 2. 简述 Webl.0 和 Web2.0 的区别。 3. 安装tomcat8,配置服务启动脚本,部署jpress应用。 一、简述静态网页和动态网页的区别 (1)静态网页 1.什么是静态网页 请求响应信息,发…...
Vulnhub: blogger:1靶机
kali:192.168.111.111 靶机:192.168.111.176 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.176 在80端口的/assets/fonts/目录下发现blog目录,访问后发现为wordpress 利用wpscan发现wordpress插件wpdisc…...
老版MFC工程迁移到VC2019编译EXE太大的问题
有个老版静态链接MFC库的MFC程序需要迁移到VC2019编译,直接用VC2019打开就会自动迁移过去,然后编译一下,生成的EXE大小将近3MB,老版的工程编译出来也就600多KB。 肯定哪里不对劲! 好一顿研究之后发现原来默认会把MFC…...
报错 RuntimeError: Only consecutive 1-d tensor indices are supported in exporting aten::index_put to O
多个轴索引,存在多个数值,需要满足【:】所在轴的数值在内存中是连续的,也就是【:】只能出现在最后的dimension,不能出现在前面,先放到最后,然后用permute函数 错误的方式1:x[self.c1[:, 0], :,…...
混音教学第五课|从零认识 RVC:软件启动全流程真机实操(GTX1050Ti 专属)
作者:龙沅可 各位音乐编程圈的兄弟,我是深耕实战 3 年的地下程序员胡桃。前面我们走完了人声分离、软件模型全套准备、Anaconda 环境兜底、VOCALOID&RVC 选择杂谈、官方作品技术复盘 个人修复版全流程,本期终于回归主线实操,…...
避开这些坑!SAP Smartforms打印配置详解:从打印机选择到预览设置
SAP Smartforms打印配置避坑指南:从参数解析到实战调试 每次调试SAP Smartforms打印功能时,那些看似简单的参数背后往往藏着无数"坑"。作为从业多年的SAP技术顾问,我见过太多因为一个参数设置不当导致整个打印流程崩溃的案例。本文…...
等保2.0实战:手把手教你检查Nginx日志审计配置(含access.log/error.log排查)
等保2.0合规实战:Nginx日志审计配置深度检查指南 在等保2.0的合规要求中,安全审计模块是核心考察项之一。作为企业级Web服务的门户,Nginx的日志审计配置直接关系到等保测评的通过与否。本文将带你从零开始,逐步拆解Nginx日志审计的…...
Windows Cleaner:免费开源的系统清理工具,让C盘重获新生
Windows Cleaner:免费开源的系统清理工具,让C盘重获新生 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常遇到C盘爆红的尴尬局面…...
GHelper完整指南:3分钟掌握华硕笔记本轻量控制工具,彻底告别臃肿系统
GHelper完整指南:3分钟掌握华硕笔记本轻量控制工具,彻底告别臃肿系统 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephy…...
5分钟掌握Applite:macOS上最简单免费的Homebrew图形界面应用商店
5分钟掌握Applite:macOS上最简单免费的Homebrew图形界面应用商店 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为macOS应用管理而烦恼吗?Applite…...
Illustrator脚本终极指南:25个免费工具彻底改变你的设计工作流
Illustrator脚本终极指南:25个免费工具彻底改变你的设计工作流 【免费下载链接】illustrator-scripts Adobe Illustrator scripts 项目地址: https://gitcode.com/gh_mirrors/il/illustrator-scripts 如果你正在寻找能够显著提升Adobe Illustrator工作效率的…...
告别“充不上电”:手把手教你用万用表排查直流快充桩常见故障(附检测点电压实测)
告别“充不上电”:手把手教你用万用表排查直流快充桩常见故障(附检测点电压实测) 作为一名在充电桩运维一线摸爬滚打多年的"老电工",我见过太多因为一个小电阻损坏导致整个充电站瘫痪的案例。今天,我就把压箱…...
golang如何给图片添加水印_golang图片添加水印解析
用 github.com/disintegration/imaging 加水印最稳,因其纯 Go 实现、无 CGO 依赖、自动处理预乘 alpha、支持抗锯齿缩放与正确图层叠加,避免原生 image 包手动合成导致的发虚、透明度错乱、背景变黑等问题。用 github.com/disintegration/imaging 加水印…...
