linux指令--sed

news2024/11/27 22:31:53

sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

语法解析

sed  [选项]   编辑命令   文件

选项:

  • -n:只显示匹配处理的行
  • -e:执行多个编辑命令时
  • -i:在原文件中进行修改,不输出到屏幕
  • -r:支持扩展正则表达式
  • -f:从脚本文件中读取内容并执行

编辑命令:

  • p:打印匹配行(print)
  • d:删除指定行 (delete)
  • a:在匹配行后面追加 (append)
  • i:在匹配行前面插入 (insert)
  • c:整行替换
  • r:将文件的内容读入 (read)
  • w:将文本写入文件 (write)
  • s:字符串替换(匹配正则表达式)(substitution)
  • =:输出行号

使用示例

先创建文件test.txt,并写入如下内容:

HELLO LINUX!  
Linux is a free unix-type opterating system.  
This is a linux testfile!  
Linux test 
Google
Taobao
Runoob
Tesetfile
Wiki

p命令的使用

通常与-n选项结合使用

输出行内容:

sed -n '1p' test.txt  // 输出第一行内容
sed -n '1,5p' test.txt  // 输出1~5行内容
sed -n '$p' test.txt  // 输出最后一行内容
sed -n '1p;2p;5p' test.txt  // 输出第1、2、5行内容

模式匹配输出行:

sed -n '/模式/p' 文件

sed -n '/is/p' test.txt  // 打印存在 is 内容的行

d命令的使用

删除指定行:

sed '3d' test.txt  // 删除第三行内容

a命令的使用

与-i选项结合使用,在原内容的基础上进行修改

sed -i '1a linux-next' test.txt  // 在第一行后添加了‘linux-next’内容

sed -i '/is/a is-next' test.txt  // 在含有 is 内容的行后添加‘is-next’内容

i命令的使用

与a命令使用类似,只不过是在指定行前插入。

sed -i '1i linux-next' test.txt  // 在第一行前插入
sed -i '/is/i is-next' test.txt  // 在含有 is 内容的行前添加‘is-next’内容

c命令的使用

对整行进行修改

sed '1c hello linux' test.txt  // 对第一行内容进行修改 内容改为‘hello linux’
// 因为没有带任何选项,所以默认打印操作后的所有行内容,不会在原内容上修改

sed '/is/c hello linux' test.txt  // 将含有 is 内容的行修改为hello linux

r命令的使用

将指定文件读入到文件中,操作执行在指定行的后面

新建一个临时文件tmp:

I am new content

将tmp文件的内容读入到test.txt文件中

sed '1r tmp' test.txt  // 对test.txt文件的第一行读入tmp文件

模式匹配读入

sed '/is/r tmp' test.txt  // 将tmp文件内容读入到test.txt文件中含义is的行之后

s命令的使用--文本替换

sed -i '[address]s/pattern/replacement/flags' filename
// -i 加上选项时在原文上修改,不加则不会修改原文内容
// pattern 查找内容
// replacement替换内容

address用法如下:

address 数字,表示第几行。如3指第三行

address,address1 数字,表示从第几行到第几行。如3,5 从第三行到第五行

$ 表示最后一行。如2,$ 从第二行到最后一行

flags 标记功能

n 1~512 之间的数字,表示指定要替换的字符串在一行中出现第几次时才进行替换,例如,一行中有 3 个 A,但用户只想替换第二个 A,这是就用到这个标记;

g 全局替换。对数据中所有匹配到的内容进行替换,如果没有 g,则只会在第一次匹配成功时做替换操作。例如,一行数据中有 3 个 A,则只会替换第一个 A;

p 会打印与替换命令中指定的模式匹配的行。此标记通常与 -n 选项一起使用。

w file 将缓冲区中的内容写到指定的 file 文件中;

& 用正则表达式匹配的内容进行替换;

\n 匹配第 n 个子串,该子串之前在 pattern 中用 指定。

\ 转义(转义替换部分包含:&、\ 等)。

用法案例:

lixd@VM-16-13-ubuntu:~/practice$ cat test.txt

LINUX!

Linux is a free unix-type opterating system.

This is a linux testfile!

Linux test

Google

Taobao

Runoob

Tesetfile

Wiki

下面的操作不加 -i 选项,不会在原文内容上修改:

// 将全局的LINUX替换为MySQL
sed 's/LINUX/MySQL/g' test.txt

// 将每行第二次出现的a字符替换为#
sed 's/a/#/2g' test.txt

// 将第1到第三行头部添加#
sed '1,3 s/^/#/g' test.txt
// 将第一到第三行末尾添加?
sed '1,3 s/$/?/g' test.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1802798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下对于Qt中带 / 的路径的处理

在Windows下,如果你想使用操作系统的分隔符显示用户的路径,请使用 toNativeSeparators()。 请看以下代码: void Player::on_playBtn_clicked() {if (this->m_url.isEmpty()) {openMedia();if (this->m_url.isEmpty())return;}qDebug(…

机器学习作业6——svm支持向量机

目录 一、理论 概念: 线性可分: 支持向量: 间隔: 目标: 软间隔: 梯度下降法: 别的方法: 拉格朗日函数: SMO算法: 核函数: 二、代码 …

数据结构之ArrayList与顺序表(下)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 目录 ArrayList的具体使用 118. 杨辉三角 扑克洗牌算法 接上篇:数据结构之ArrayLis…

三端植物大战僵尸杂交版来了

Hi,好久不见,最近植物大战僵尸杂交版蛮火的 那今天苏音整理给大家三端的植物大战僵尸杂交版包括【苹果端、电脑端、安卓端】 想要下载的直接划到最下方即可下载。 植物大战僵尸,作为一款古老的单机游戏,近期随着B站一位UP主潜艇…

英伟达黄仁勋最新主题演讲:“机器人时代“已经到来

6月2日,英伟达联合创始人兼首席执行官黄仁勋在Computex 2024(2024台北国际电脑展)上发表主题演讲,分享了人工智能时代如何助推全球新产业革命。 黄仁勋表示,机器人时代已经到来,将来所有移动的物体都将实现…

开源与新质生产力

在这个信息技术迅猛发展的时代,全球范围内的产业都在经历着深刻的变革。在这样的背景下,“新质生产力”的概念引起了广泛的讨论。无论是已经成为或正努力转型成为新质生产力的企业,都在寻求新的增长动力和竞争优势。作为一名长期从事开源领域…

什么是2+1退休模式?什么是链动2+1模式?

21退休模式又称链动21模式,主要是建立团队模式,同时快速提升销量。是目前成熟模式中裂变速度最快的模式。21退休模式合理合规,同时激励用户公司的利润分享机制,让您在享受购物折扣的同时,也能促进并获得客观收益。 模…

kettle从入门到精通 第六十六课 ETL之kettle kettle阻塞教程,轻松获取最后一行数据,so easy

场景:ETL沟通交流群内有小伙伴反馈,如何在同步一批数据完成之后记录下同步结果呢?或者是调用后续步骤、存储过程、三方接口等。 解决:使用步骤Blocking step进行阻塞处理即可。 1、下面的demo演示从表t1同步数据至表t2(t1表中有三条数据,t2为空表,两个表表结构相同),…

Plotly : 超好用的Python可视化工具

文章目录 安装:开始你的 Plotly 之旅基本折线图:简单却强大的起点带颜色的散点图:数据的多彩世界三维曲面图:探索数据的深度气泡图:让世界看到你的数据小提琴图:数据分布的优雅展现旭日图:分层数…

Vue学习day05笔记

day05 一、学习目标 1.自定义指令 基本语法(全局、局部注册)指令的值v-loading的指令封装 2.插槽 默认插槽具名插槽作用域插槽 3.综合案例:商品列表 MyTag组件封装MyTable组件封装 4.路由入门 单页应用程序路由VueRouter的基本使用 …

认识Java中的String类

前言 大家好呀,本期将要带大家认识一下Java中的String类,本期注意带大家认识一些String类常用方法,和区分StringBuffer和StringBuilder感谢大家收看 一,String对象构造方法与原理 String类为我们提供了非常多的重载的构造方法让…

kubesz(一键安装k8s)

引言 Kubernetes(K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用程序。kubeasz 是一个用于快速搭建 Kubernetes 高可用集群的项目,它基于 Ansible,通过提供一套简单、易用的配置,使得…

java异常处理知识点总结

一.前提知识 首先当运行出错的时候,有两种情况,一种叫做“错误”,另一种叫做“异常”。错误指的是运行过程中遇到了硬件或操作系统出错,这种情况程序员是没办法处理的,因为这是硬件和系统的问题,不能靠代码…

Linux: ubi rootfs 故障案例 (1)

文章目录 1. 前言2. ubi rootfs 故障现场3. 故障分析与解决4. 参考资料 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. ubi rootfs 故障现场 问题故障内核日志如下: Starting ker…

【数据结构与算法 | 二叉树篇】力扣101, 104, 111,LCR144

1. 力扣101 : 对称二叉树 (1). 题 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出:false…

Go语言 几种常见的IO模型用法 和 netpoll与原生GoNet对比

【go基础】16.I/O模型与网络轮询器netpoller_go中的多路io复用模型-CSDN博客 字节开源的netPoll多路复用器源码解析-CSDN博客 一、几种常见的IO模型 1. 阻塞I/O (1) 解释: 用户调用如accept、read等系统调用,向内核发起I/O请求后,应用程序…

多样本上下文学习:开拓大模型的新领域

大模型(LLMs)在少量样本上下文学习(ICL)中展现出了卓越的能力,即通过在推理过程中提供少量输入输出示例来学习,而无需更新权重。随着上下文窗口的扩展,我们现在可以探索包含数百甚至数千个示例的…

基于JSP技术的文物管理系统

你好呀,我是计算机学长猫哥!如果有相关需求,文末可以找到我的联系方式。 开发语言:Java 数据库:MySQL 技术:JSP技术 工具:IDEA/Eclipse、Navicat、Maven 系统展示 首页 管理员界面 用户前台…

步态控制之ZMP

零力矩点(Zero Moment Point,ZMP)概述 ZMP步态控制是人形机器人步态控制中的一个关键概念,旨在确保机器人在行走或站立过程中保持平衡。ZMP是指机器人接触面上力矩为零的点,确保在该点上机器人不会倾倒。这个示例展示…

Python的登录注册界面跳转汽车主页面

1.登录注册界面的代码: import tkinter as tk from tkinter import messagebox,ttk from tkinter import simpledialog from ui.car_ui import start_car_ui# 设置主题风格 style ttk.Style() style.theme_use("default") # 可以根据需要选择不同的主题…