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

[linux]sed命令基础入门详解

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

一.基本语法

sed [options] 'commands' files

  • options:可选的命令行选项。
  • commands:要执行的sed命令。
  • files:要处理的文件列表。
1.替换文本:替换第一个匹配项:
sed 's/old/new/' file.txt替换所有匹配项:
sed 's/old/new/g' file.txt2.打印行:打印文件中所有行:
sed -n 'p' file.txt3.删除行:删除包含特定文本的所有行:
sed '/pattern/d' file.txt4.插入文本:在第一行前插入文本:
sed 'i\new line' file.txt5.追加文本:在最后一行后追加文本:
sed 'a\new line' file.txt6.替换特定行:替换第3行:
sed '3s/old/new/' file.txt7.使用模式分隔符:使用其他字符作为分隔符:
sed 's#old#new#' file.txt8.使用正则表达式:使用扩展正则表达式(需要 -r 选项):
sed -r 's/regex/replacement/' file.txt9.原地编辑文件:直接修改文件内容:
sed -i 's/old/new/g' file.txt10.不区分大小写:进行不区分大小写的替换:
sed 's/old/new/I' file.txt11.多行模式:处理多行匹配:
sed ':a;N;$!ba;s/old/new/g' file.txt12.使用循环:对于每找到一个匹配项,执行特定命令:
sed -n '/foo/{ :a p; n; ba; }' file.txt

二.实操案例

首先需要建立一个文档。

1.替换文本

 cat test.txt    #与之后的内容进行对比
"
old-old-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"sed 's/old/new/' test.txt    #替换第一个匹配项"
new-old-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"sed 's/old/new/g' test.txt    #替换所有匹配项
"
new-new-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

2.打印行

sed -n 'p' test.txt   #打印文件中所有行
"
old-old-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"sed -n '2p' test.txt    #打印文件中第二行
"
I love biology
"sed -n '2,4p' test.txt     #打印文件中第二到第四行
"
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
"

3.删除行

sed '/o/d' test.txt   #删除包含特定文本的所有行
"
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

4.插入文本

sed 'i\bew line' test.txt      #在第一行前插入
"
bew line
old-old-new
bew line
I love biology
bew line
>DJAKNCKALNXLKLHDJKkljkxkxhka
bew line
2021-6-27
bew line
你好,努力攀登的科学树
"sed '3i\biology' test.txt       #在第三行前插入
"
old-old-new
I love biology
biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

5.追加文本

sed 'a\new line' test.txt  #在最后一行追加文本
"
old-old-new
new line
I love biology
new line
>DJAKNCKALNXLKLHDJKkljkxkxhka
new line
2021-6-27
new line
你好,努力攀登的科学树
new line
"

6.替换特定行

sed '2s/love/like/' test.txt   #替换第二行的love,将其改为like
"
old-old-new
I like biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

以上操作都没有改变原文件。

7.编辑原文件

 sed -i 's/old/new/g' test.txt | cat test.txt
"
new-new-new
I love biology
>DJAKNCKALNXLKLHDJKkljkxkxhka
2021-6-27
你好,努力攀登的科学树
"

相关文章:

[linux]sed命令基础入门详解

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这…...

Charles抓包工具系列文章(一)-- Compose 拼接http请求

一、背景 众所周知,Charles是一款抓包工具,当然是http协议,不支持tcp。(如果你想要抓tcp包,请转而使用wireshark,在讲述websocket的相关技术有梳理过wireshark抓包) 话说回来,char…...

OLMo:真正完全开源的大模型

最近,又有一家机构AI2(Allen Institute for AI)开源了一个LLM:OLMo,它的英文全称就叫Open Language Model。相比之前开源的大模型,OLMo的独特之处是完全开源,除了训练的模型,OLMo还开…...

51单片机STC89C52RC——12.1 数据存储芯片AT24C02

目的/效果 利用存储芯片AT24C02存储数据,LCD1602显示存储的数据。 一,STC单片机模块 二,AT24C02存储芯片 2.1 介绍 AT24C02是一个2K位串行CMOS E2PROM,内部含有256个8位字节,采用先进CMOS技术实质上减少了器件的功…...

融入云端的心跳:在Spring Cloud应用中集成Eureka Client

融入云端的心跳:在Spring Cloud应用中集成Eureka Client 引言 在微服务架构中,服务发现是一个关键组件,它允许服务实例之间相互发现并通信。Netflix Eureka是Spring Cloud体系中广泛使用的服务发现框架。Eureka提供了一个服务注册中心&…...

CocosCreator构建IOS的wwise教程

CocosCreator构建IOS教程 添加wwise教程: 1.添加include 2.添加SoundEngine 3.添加Profile-iphoneos下面lib下面的.a 4.导入js调用C++的文件 5.导入这些文件 6.初始化ios绝对路径和TTS语音合成对象 6.获得根目录绝对路径,加载pck需要找到绝对路径。怎么找绝对路径? #impor…...

掌握 SQL Server 中的 FLOOR 函数:数据舍入的艺术

掌握 SQL Server 中的 FLOOR 函数:数据舍入的艺术 引言 在数据分析和处理中,我们经常需要对数值进行精确控制,比如将数值舍入到特定的精度。SQL Server 提供了多种数学函数,其中 FLOOR 函数就是用来执行向上舍入操作的强大工具。…...

【折腾笔记】兰空图床使用Redis做缓存

前言 最近发现我部署在群晖NAS上的兰空图床程序在高并发的情况下会导致图片加载缓慢或出现图片加载失败的情况,于是我查阅了官方文档资料并进行了一系列的测试,发现兰空图床如果开启了原图保护功能,会非常的吃CPU的性能,尤其是在…...

【Ubuntu】如何用指令设置静态IP

这里介绍的是利用netplan 的配置文件一般在 /etc/netplan/ 目录下,文件名类似 01-network-manager-all.yaml。 用 nano/ vim 编辑器打开配置文件: sudo nano /etc/netplan/01-network-manager-all.yaml # 替换成你的文件名修改配置文件 network:versi…...

mechanize - 自动化与HTTP web服务器的交互操作

1、前言 随着自动化测试的普及与落地推广,出现了众多知名的自动化测试工具,如Selenium 、Robot Framework、Playwright等。本文将介绍一款在Python环境下的mechanize库,这个库能够模拟浏览器行为,支持发送HTTP请求、解析HTML页面和…...

【Android】保留elevation层级效果,舍弃阴影效果

关于elevation属性 elevation是高度,海拔的意思 该属性可以设置View在父容器中的层级,即z属性 当view的elevation高于其它view时,它将显示在最上方,并产生阴影效果 关闭阴影效果 view的高度阴影,通过outlineProvi…...

Java新手启航:Windows下JDK安装,开启编程之旅

你是不是对编程充满好奇,想要迈入Java的世界,却不知道从何开始?别担心,每一个Java大师都是从安装JDK开始的,而今天,我将手把手教你如何轻松完成JDK的安装,让你迈出编程之旅的第一步! 接下来&am…...

c++指针和引用之高难度(二)习题讲解

1.【单选题】 int a[4] { 1001,1002,1003,1004 }; int* p{ &a[1] }; p[1] ? A 1001 B 1002 C 1003 解析:这道题考察了指针和数组可以混用。p 指向了 数组 a[0] 的地址,也就是 1002 的地址,此时 *p p[0]…...

UNIAPP编译到微信小程序时,会多一层以组件命名的标签

UNIAPP编译到微信小程序时,会多一层以组件命名的标签 解决方案 可以配置virtualHost来配置 export default {options: {virtualHost: true} }...

工业自动化控制中心

目录 一 设计原型 二 后台源码 一 设计原型 二 后台源码 using System; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms;namespace 工业自动化控制中心 {public partial class Form1 : Form{public Form1(){InitializeComponent();}pri…...

【Git】GitIgnore不生效

这里可能有两种原因,一个没有刷新Git缓存,二是Git忽略规则有问题 更新Git缓存 git rm -r --cached . git add . git commit -m "modify git ignore rule"Ignore规则 检查下忽略文件的目录表示是否正确 XXX忽略任意目录下名为XXX的文件 …...

面向对象,常用类,集合,异常,JDBC,mysql数据库内容的复习,

1,面向对象 面向对象与面向过程对比 面向过程:关注过程,适合解决简单直接的问题,代码结构以函数为单位,如C语言。 面向对象:关注类,适合解决复杂问题更加适合解决复杂的项目中的问题等等&…...

HTML5+JavaScript单词游戏

HTML5 JavaScript单词游戏 数据字典格式:每行一个 单词 ,单词和解释用空格分隔,如 a art.一(个);每一(个) ability n.能力;能耐,本领 able a.有能力的;出色的 baby n.婴儿;孩子…...

Windows 中的 Hosts 文件是什么?如何找到并修改它?

什么是 Hosts 文件 Hosts 文件是一个纯文本文件,存在于几乎所有的操作系统中,用于将主机名映射到 IP 地址。在域名系统(DNS)尚未普及之前,Hosts 文件是计算机网络中唯一用于主机名解析的方式。随着网络规模的扩大和 D…...

详细分析Oracle中的tnsnames.ora基本知识 以及 PLSQL如何连接(附Demo)

目录 1. tnsnames.ora2. Demo3. 实战 1. tnsnames.ora Oracle 数据库网络配置文件,用于配置客户端与数据库服务器之间的连接 定义网络服务名称,客户端可以使用这些名称连接到数据库实例 基本的路径如下: Windows: ORACLE_HOME\network\ad…...

NaViL-9B多模态能力详解:从API调用到温度参数优化的完整指南

NaViL-9B多模态能力详解:从API调用到温度参数优化的完整指南 1. 平台概述与核心能力 NaViL-9B是一款原生多模态大语言模型,由专业研究机构开发。它同时具备文本理解和图像分析能力,能够处理纯文本问答和图片内容理解任务。这种双模态能力使…...

OpenCV实战:图像亮度、对比度与锐化的智能调节与优化

1. 图像处理基础概念解析 在开始动手实践之前,我们需要先理解几个关键概念。亮度、对比度和锐化这三个参数就像调节电视画面的三个旋钮,每个旋钮都会对图像产生独特的影响。 亮度(Brightness)就像房间里的灯光开关。调高亮度&…...

ClickHouse配置优化实战:关键参数详解与性能调优指南

1. ClickHouse配置优化的核心逻辑 ClickHouse作为一款高性能的OLAP数据库,其配置优化需要遵循三个黄金法则:资源隔离、瓶颈定位和场景适配。我见过太多团队一上来就盲目调整参数,结果反而导致性能下降。正确的做法应该是先理解系统行为&#…...

Python从入门到精通(第14章):迭代器与生成器

开头导语 这是本系列第14章。前面你已经用过很多次迭代器和生成器——for x in data 的背后是什么,map 返回的对象为什么不能下标访问,range 为什么不会占很多内存——这些问题的答案都在本章。通过亲手实现一个迭代器类,你会对 Python 迭代协议有清晰的认识,遇到相关错误…...

实战避坑:用Playwright+Selenium绕过电商网站验证码的3种方法(附Python代码)

实战避坑:用PlaywrightSelenium绕过电商网站验证码的3种方法(附Python代码) 电商平台的反爬虫机制日益复杂,验证码作为核心防线之一,已经从简单的图文识别升级到行为验证、智能风控等多维度拦截。本文将聚焦淘宝、京东…...

探索MediaPipe:从零开始构建实时计算机视觉应用的完整指南

探索MediaPipe:从零开始构建实时计算机视觉应用的完整指南 【免费下载链接】mediapipe Cross-platform, customizable ML solutions for live and streaming media. 项目地址: https://gitcode.com/GitHub_Trending/med/mediapipe MediaPipe是Google开源的一…...

Z-Image-Turbo_Sugar脸部Lora赋能网络安全:生成模拟人脸进行隐私保护测试

Z-Image-Turbo_Sugar脸部Lora赋能网络安全:生成模拟人脸进行隐私保护测试 1. 引言:当网络安全遇上AI造脸 你有没有想过,那些用来保护我们手机、门禁的人脸识别系统,到底安不安全?安全研究员们每天都在琢磨这个问题。…...

mitmproxy实战:从环境搭建到HTTPS抓包全攻略

1. 认识mitmproxy:你的网络调试瑞士军刀 第一次听说mitmproxy时,你可能觉得这是个复杂的安全工具。但实际用过后就会发现,它就像网络调试领域的瑞士军刀,能解决各种数据抓包难题。简单来说,mitmproxy是个开源的交互式中…...

Phi-4-reasoning-vision-15B部署教程:开源大模型镜像适配国产GPU方案

Phi-4-reasoning-vision-15B部署教程:开源大模型镜像适配国产GPU方案 1. 模型介绍 Phi-4-reasoning-vision-15B是微软推出的视觉多模态推理模型,具备强大的图像理解和分析能力。这个15B参数规模的模型特别擅长处理需要结合视觉和语言理解的复杂任务。 …...

XposedRimetHelper:如何优雅解决远程办公的定位打卡难题?[特殊字符]

XposedRimetHelper:如何优雅解决远程办公的定位打卡难题?🚀 【免费下载链接】XposedRimetHelper Xposed 钉钉辅助模块,暂时实现模拟位置。 项目地址: https://gitcode.com/gh_mirrors/xp/XposedRimetHelper 面对企业日益严…...