Sed流编辑器总结
sed 是 Unix 和 Linux 系统中的一个强大的流编辑器。它用于对文本进行基本的修改和处理。以下是关于 sed 的详细解说,包括其基本语法,常见用法和一些高级用法。
基本语法
sed [选项] '命令' 输入文件
常见选项
-e:指定要执行的sed命令。-f:指定包含sed命令的脚本文件。-i:直接修改文件内容(小心使用)。-n:取消默认输出,适合与p命令一起使用来控制输出。-r:使用扩展正则表达式。-s:将输入文件视为独立的文件,而不是一个长的流。
常用命令
s: 替换p: 打印d: 删除a: 追加文本在当前行后i: 插入文本在当前行前c: 替换行q: 退出y: 转换字符
基本命令
-n 可以抑制默认输出,只输出第2行:
sed -n '2p' file.txt
搜索和替换
- 基本替换语法:
sed 's/原文本/新文本/' 输入文件
echo "hello world" | sed 's/world/universe/' # 输出:hello universe
- 全局替换:
g
echo "hello world world" | sed 's/world/universe/g' # 输出:hello universe universe
- 指定第几个替换:(指定第二个替换)
echo "hello world world" | sed 's/world/universe/2' # 输出:hello world universe
- 匹配模式替换
echo "hello world" | sed '/world/s/hello/hi/' # 输出:hi world
指定行进行替换
- 在特定行进行替换
sed '2s/original/replacement/' file.txt # 替换第2行的内容
- 在行号范围内替换
sed '2,4s/original/replacement/' file.txt # 在第2到第4行进行替换
- 匹配模式进行替换
sed '/pattern/s/original/replacement/' file.txt # 在包含pattern的行进行替换
删除行
- 删除指定行
sed '2d' file.txt # 删除第2行**删除行号范围内的行**sed '2,4d' file.txt # 删除第2到第4行
- 删除匹配模式的行
sed '/pattern/d' file.txt # 删除包含pattern的行
插入和追加文本
- 在指定行前插入文本
sed '2i\插入的文本' file.txt # 在第2行前插入文本
- 在指定行后追加文本
sed '2a\追加的文本' file.txt # 在第2行后追加文本
替换整个文件
使用 -i 选项可以直接在文件内执行替换操作
sed -i 's/original/replacement/g' file.txt # 直接修改文件内容,替换所有匹配项
高级用法
多点编辑
可以通过 -e 选项进行多次编辑。
sed -e 's/old1/new1/' -e 's/old2/new2/' file.txt
使用脚本文件
如果有一系列的 sed 命令,可以将它们放在一个脚本文件中,然后使用 -f 选项执行。
# commands.sed
s/original/replace1/
s/old/replace2/# 使用命令执行
sed -f commands.sed file.txt
替换时使用正则表达式
echo "abc123def" | sed -r 's/[0-9]+/[digits]/' # 输出:abc[digits]def
保留备份文件
在使用 -i 选项时,可以通过添加扩展名来保存备份。
sed -i.bak 's/original/replacement/' file.txt # 修改文件内容并保留备份 file.txt.bak
只打印匹配的行
结合 -n 选项和 p 命令,只打印与特定模式匹配的行。
sed -n '/pattern/p' file.txt
处理多行文本
# 交换每两行的内容
sed 'N;s/\(.*\)\n\(.*\)/\2\n\1/' file.txt # 将每两行交换位置
复杂替换示例
# 假设file.txt 内容如下:
# alpha beta
# gamma deltased 's/\([aeiou]\)/<\1>/g' file.txt # 将所有元音替换为<元音>
# alpha beta => <a>lph<a> b<e>t<a>
# gamma delta => g<a>mm<a> d<e>lt<a>
总结
| 命令/选项 | 含义 | 示例 |
|---|---|---|
-n | 取消默认输出 | sed -n 'p' file.txt |
-e script | 允许多行脚本 | sed -e 's/foo/bar/' -e 's/baz/qux/' file.txt |
-i[SUFFIX] | 直接编辑文件,备份可选 | sed -i 's/foo/bar/g' file.txt |
-r | 使用扩展正则表达式 | sed -r 's/[0-9]+/NUMBER/' file.txt |
s/old/new/g | 替换文本 | sed 's/foo/bar/g' file.txt |
p | 打印行 | sed -n '2p' file.txt |
d | 删除行 | sed '3d' file.txt |
a\text | 在当前行后追加文本 | sed '3a\Hello World' file.txt |
i\text | 在当前行前插入文本 | sed '3i\Hello World' file.txt |
c\text | 替换行 | sed '3c\Hello World' file.txt |
{} | 指定区间的操作 | sed '2,4{s/foo/bar/g}' file.txt |
y/abc/ABC/ | 转换字符 | sed 'y/abc/ABC/' file.txt |
q | 退出 | sed '5q' file.txt |
相关文章:
Sed流编辑器总结
sed 是 Unix 和 Linux 系统中的一个强大的流编辑器。它用于对文本进行基本的修改和处理。以下是关于 sed 的详细解说,包括其基本语法,常见用法和一些高级用法。 基本语法 sed [选项] 命令 输入文件常见选项 -e:指定要执行的 sed 命令。-f&a…...
智合同丨AIGC如何助力合同智能应用
#AIGC #合同智能应用 #智合同 AIGC,即人工智能生成内容技术(Artificial Intelligence Generated Content),近期在各个领域发展可谓是如火如荼,那么它在合同智能应用方面可以提供哪些助力? 让我们和智合…...
CSRF 令牌的生成过程和检查过程
在 Django 中,CSRF 令牌的生成和检查过程是通过 Django 的 CSRF 中间件 (CsrfViewMiddleware) 和模板标签 ({% csrf_token %}) 自动处理的。以下是详细的生成和检查过程: CSRF 令牌的生成过程 用户访问页面: 当用户第一次访问页面时,Django 会为用户创建一个会话。如果用户…...
计算机网络学习记录 网络层 Day4(下)
计算机网络学习记录 网络层 Day4 (下) 你好,我是Qiuner. 为记录自己编程学习过程和帮助别人少走弯路而写博客 这是我的 github https://github.com/Qiuner ⭐️ gitee https://gitee.com/Qiuner 🌹 如果本篇文章帮到了你 不妨点个赞吧~ 我…...
3、前端本地环境搭建
前端本地环境搭建 安装node [node下载地址] https://nodejs.org/en/download/prebuilt-installer 选择LTS的版本进行下载 下载后直接双击点击,选择自己想要安装到的目录一直点下一步即可(建议不要安装到c盘) 安装完成后配置环境变量&am…...
Python爬取城市空气质量数据
Python爬取城市空气质量数据 一、思路分析1、寻找数据接口2、发送请求3、解析数据4、保存数据二、完整代码一、思路分析 目标数据所在的网站是天气后报网站,网址为:www.tianqihoubao.com,需要采集武汉市近十年每天的空气质量数据。先看一下爬取后的数据情况: 1、寻找数据…...
【MyBatisPlus条件构造器】
文章目录 什么是条件构造器?使用步骤1. 引入 MyBatisPlus 依赖2. 创建实体类3. 使用条件构造器查询4. 执行查询 示例代码 什么是条件构造器? 条件构造器是 MyBatisPlus 提供的一种灵活的查询条件设置方式,它可以帮助开发者构建复杂的查询条件…...
容器多机部署eureka及相关集群服务出现 Request execution failed with message: AuthScheme is null
预期部署方案:两个eureka三个相关应用 注册时应用出现:Request execution failed with message: Cannot invoke “Object.getClass()” because “authScheme” is null,一开始认为未正确传递eureka配置的账户密码,例:…...
Qt Graphics View Framework 使用教程
欢迎来到 Qt Graphics View Framework 的世界!本教程将引导您了解这一强大工具的基础知识,并教您如何开始使用它来创建丰富的 2D 图形界面。无论您是编程新手还是经验丰富的开发者,本教程都将帮助您快速上手。 基本概念 Qt Graphics View F…...
【调试笔记-20240606-Linux-为 OpenWrt 的 nginx 服务器添加Shell CGI 支持】
调试笔记-系列文章目录 调试笔记-20240606-Linux-为 OpenWrt 的 nginx 服务器添加Shell CGI 支持 文章目录 调试笔记-系列文章目录调试笔记-20240606-Linux-为 OpenWrt 的 nginx 服务器添加Shell CGI 支持 前言一、调试环境操作系统:Windows 10 专业版调试环境调试…...
flink实战--⼤状态作业调优实践指南-Flink SQL 作业篇
简介 作为一种特定领域语言,SQL 的设计初衷是隐藏底层数据处理的复杂性,让用户通过声明式语言来进行数据操作。而Flink SQL 由于其架构的特殊性,在实现层面通常需引入状态后端 配合 checkpoint 来保证计算结果的最终一致性。目前 Flink SQL 生成状态算子的策略由优化器根据配…...
数据结构:顺序串
目录 1.顺序串是什么? 2.顺序串常见操作和应用 3.包含头文件 4.结点设计 5.接口函数定义 6.接口函数实现 7.顺序串测试案列 顺序串是什么? 顺序串,用于存储和操作字符串。在顺序串中,字符串被存储在一个连续的内存块中,…...
掌握复选框(Checkbox)的奥秘:全选与反选功能实现
前言: 在网页设计中,复选框(Checkbox)是一种常见且实用的交互元素,它允许用户从一系列选项中选择多个项。无论是电子商务网站上的商品筛选,还是在线表单的数据收集,复选框都发挥着重要作用。然…...
一篇文章带你搞懂C++引用(建议收藏)
引用 6.1 引用概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。 比如:李逵,在家称为"铁牛",江湖上人称&quo…...
查询SQL:文章浏览1
问题描述 请查询出所有浏览过自己文章的作者 结果按照 id 升序排列。 查询结果的格式如下所示: 题目分析: 这题主要考察排序asc(升序)、desc(降序)以及distinct字段。 解决方案: select DIS…...
android 在onCreate方法中获得view的宽高
view在绘制完成后才会有自己的宽高,所以在onCreate中要获得view的宽高可以通过以下4中方法: 1、ViewTreeObserver:监听界面绘制事件,在layout时调用,使用完毕后记得removeListener 2、view.post,因为runn…...
SOA主要协议和规范
Web服务作为实现SOA中服务的最主要手段。首先来了解Web Service相关的标准。它们大多以“WS-”作为名字的前缀,所以统称“WS-*”。Web服务最基本的协议包括UDDI、WSDL和SOAP,通过它们,可以提供直接而又简单的Web Service支持,如图…...
30、matlab现代滤波:维纳滤波/LMS算法滤波/小波变换滤波
1、信号1和信号2的维纳滤波 实现代码 N 2000; %采样点数 Fs 2000; %采样频率 t 0:1 / Fs:1 - 1 / Fs; %时间序列 Signal1 sin(2*pi*20* t) sin(2*pi*40* t) sin(2*pi*60* t); Signal2[2*ones(1,50),zeros(1,50),-1*ones(1,100),zeros(1,50),-2*ones(1,50),zeros(1,50),1…...
HTML5 视频 Vedio 标签详解
HTML5 引入了 <video> 标签,允许开发者在网页中直接嵌入视频文件,而不需要依赖第三方插件。本文将全面介绍 <video> 标签的各种属性,并通过实例代码详细说明其用法。 一、基础用法 1. 基本结构 HTML5 中使用 <video> 标…...
三十五篇:数字化转型的引擎:赋能企业的ERP系统全景
数字化转型的引擎:赋能企业的ERP系统全景 1. 引言 在这个快速变化的数字时代,现代企业面临着前所未有的挑战和机遇。企业资源计划(ERP)系统,作为数字化转型的核心,扮演着至关重要的角色。它不仅是企业运营…...
英雄联盟本地自动化工具完整指南:10分钟精通LeagueAkari终极教程
英雄联盟本地自动化工具完整指南:10分钟精通LeagueAkari终极教程 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟排…...
完整掌握yuzu模拟器:专业级Switch游戏体验优化指南
完整掌握yuzu模拟器:专业级Switch游戏体验优化指南 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu模拟器作为目前最成熟的任天堂Switch开源模拟器,为PC玩家提供了在电脑上畅玩Switch游…...
基于LangChain与本地LLM构建私有化知识库问答系统实践
1. 项目概述:从零构建一个垂直领域的知识库与问答系统最近在整理个人技术资料时,我遇到了一个非常典型的问题:手头积累了大量来自不同渠道的电子书、技术文档、知乎专栏文章以及各种开源项目的README,内容虽然优质,但过…...
从句实战指南:从三大从句到地道英文写作
1. 从句的本质:让句子"活"起来的秘密武器 第一次接触英语从句时,我盯着课本上那句"That the earth is round is true"发呆了十分钟。主谓宾在哪?为什么that后面跟着完整句子?这种困惑持续到我发现从句就像乐高…...
Paperless-ngx文档管理系统:5个关键技巧实现智能无纸化办公
Paperless-ngx文档管理系统:5个关键技巧实现智能无纸化办公 【免费下载链接】paperless-ngx A community-supported supercharged document management system: scan, index and archive all your documents 项目地址: https://gitcode.com/GitHub_Trending/pa/pa…...
书匠策AI官网www.shujiangce.com|论文写作“裸奔时代“结束了!
哈喽各位还在跟论文死磕的朋友们,我是你们的论文科普搭子。 今天咱们换个玩法——不讲理论,不说大道理,我就拿书匠策AI( 官网直达:www.shujiangce.com) 的期刊论文功能当一台"时光机"࿰…...
不止于置顶:挖掘AfloatX的隐藏玩法,调节窗口透明度让你的Mac工作流更沉浸
不止于置顶:挖掘AfloatX的隐藏玩法,调节窗口透明度让你的Mac工作流更沉浸 当大多数Mac用户还在用分屏功能机械地排列窗口时,一小群效率极客已经通过窗口透明度调节构建出三维工作空间。AfloatX这款免费工具提供的不仅是基础的置顶功能&#x…...
为什么你的“Château Margaux”印相总像海报?——深度拆解顶级酒庄视觉DNA:橡木桶纹理采样率、标签压纹深度与AI光影映射函数
更多请点击: https://intelliparadigm.com 第一章:为什么你的“Chteau Margaux”印相总像海报?——视觉失真现象的本体论诊断 高保真图像输出失败,常被归咎于打印机或纸张——但真正症结往往潜伏在色彩管理的底层逻辑中。当一张承…...
如何构建和谐开源社区:fg-data-profiling贡献者行为准则与实践指南
如何构建和谐开源社区:fg-data-profiling贡献者行为准则与实践指南 【免费下载链接】fg-data-profiling 1 Line of code data quality profiling & exploratory data analysis for Pandas and Spark DataFrames. 项目地址: https://gitcode.com/gh_mirrors/y…...
避开这些坑!ADS1115差分测量PT1000的电路设计与程序调试心得
ADS1115差分测量PT1000的实战避坑指南:从电路设计到程序调试的深度解析 在工业级温度测量领域,PT1000凭借其出色的线性度和稳定性成为首选传感器之一。而将16位高精度ADC芯片ADS1115与PT1000结合使用,看似简单的电路背后却暗藏诸多技术陷阱。…...
