sed的用法

news2024/12/29 13:17:46

grep 就是查找文本当中的内容,扩展正则表达式

sed是一种流编辑器,一次处理一行内容

如果只是展示,会放在缓冲区(模式空间),展示结束之后,会从模式空间把操作结果删除。

一行一行处理,处理完当前行,才会处理下一行。直到文件末尾。

sed的主要作用就是对文本的内容进行增删改查,其中最好用,最强大的是改和增

sed的命令格式

sed -e '操作符' -e ‘操作符’  文件1 文件2

-e表示可以跟多个操作符,只有一个操作,-e可以省略

sed -e '操作符1;操作符2'  文件1 文件2

操作选项

sed -e  用于执行多个操作命令

sed -f  在脚本中定义好操作符,然后根据脚本内容的操作符对文件进行操作

sed -i  直接修改目标文件(慎用)

sed -n 仅显示scrip处理后的结果(不加-n,sed会有两个输出结果;加了-n 之后会把默认输出屏蔽,只显示一个结果)

操作符

p:打印结果

r:使用扩展正则表达式

s:替换,替换字符串

c:替换。替换行

y:替换,替换单个字符,多个字符替换必须和替换内容的字符长度保持一致

d:删除,删除行

a:增加,在指定行的下面一行插入内容

i:增加,在指定行的上面一行插入内容

打印功能:

sed -n 'p' 

寻址打印 sed -n '=;p' 打印所有的行

               sed -n '4p'  打印指定的行

               sed -n '$p'  打印最后一行    

               sed  -n '2,$p'  打印行号范围 打印第二行到最后一行

               sed -n '2p;$p' 打印第2行和最后一行

               sed -n  'p;n'  打印奇数行

               sed -n  'n;p'  打印偶数行

文本内容进行过滤  sed -n '/o/p'  test.txt  过滤并打印包含o 的行

使用正则表达式对文本内容进行过滤

sed -n '/^root/p' /etc/passwd  查找passwd以root开头的行

从指定行开始,打印到第一个以bash结尾的行

sed -n '3,/bash$/p' /etc/passwd

扩展正则 :sed -rn  

sed -rn '/(99:){2,}p' /etc/passwd 查找passwd有2个99的行

要么以root为开头,要么以bash为结尾的行 sed -rn '/^root|bash$/p' /etc/passwd

面试题:

如何免交互删除文本内容,不删除文件

1.sed -i 'd' 文件名

2.cat /dev/null  > test1.txt

sed的删除操作

sed -n '3d;p'  删除指定的第三行并打印剩余的行

sed -n '5,$d;p' 删除第五行到最后一行并打印剩余的行

sed -n '1!d;p' 取反,除了第一行其他的都删除

sed -n '4,6!d;p'除了第四行到第六行其他的都删除

sed -n '4p;6!d;p' 111.txt 除了第四行和第六行,其他的都删除

sed -n '/o/p' 删除o的行并打印其他行

sed -n '/o/!d' 除了o的其他都删除

免交互删除空行的三种方式:

grep -v "^$" test.txt

cat tets.txt | tr -s "\n"

sed '/^$/d' test.txt

sed的替换

替换字符串

sed -n 's/root/test/2p' /etc/passwd  把第二个root替换成test

sed -n 's/root/test/gp' /etc/passwd  把所有的root替换成test

sed -n 's/^/#/p' 把所有行都注释

sed -n '4,6s/^/#/p' 111.txt 把第四行到第六行注释

sed -n '4s/^/#/p;6s/^/#/p' 111.txt 把第四行和第六行注释

字母大小写转换 (u&小写变成大写  l&大写变成小写)

sed  's/[a-z]/\u&/' test.txt (首字母小写变成大写)

sed 's/[a-z]/\u&/g'  test.txt  (所有字母都变成大写)

sed 's/[A-Z]/\l&/' 111.txt   (把首字母大写变成小写)

sed 's/[A-Z]/\l&/g' 111.txt  (所有字母都变成小写)

整行替换

sed '/11/c wo zhen de shuai'  test.txt  把11正好替换

面试题:免交互替换ip地址

sed '/IPADDR=192.168.233.10/c IPADDR=192.168.233.100' /etc/sysconfig/network-scripts/ifcfg-ens33

sed 'y/one/111/' test.txt 把包含one的都替换成111 对应变

sed 增加

sed '/three/a  lll ' test.txt  行下插入新的内容

sed '/three/i  lll' test.txt  行上插入新的内容

sed 'three/r  test1.txt'  test.txt 读取其他文件的内容,在第三行下面插入

sed '$a kuku' test.txt  在最后一行插入新的内容

sed '$i kuku' test.txt  在倒数第二行插入新的内容

sed '$r test1.txt' test.txt 读取其他文件的内容,然后插入到对象文件的最后一行

使用sed对字符串和字符的位置进行互换

sed -r 's/(ge)(fang)(wen)/\3\1\2/'

echo 真的帅 | sed -r 's/(.)(.)(.)/\3\2\1/'

sed -f 123.txt  456.txt 脚本内容替换

面试题 免交互提取数字

grep -E '"[0-9]+\."  test.txt

cat 123.txt | sed -r 's/(.*)-(.*)(\.jar)/\2/'

打印指定时间日志

sed -n '/Jun 21 09:12:14,/Jun 21 12:00:01/p’   /var/log/messages

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

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

相关文章

消息认证码解析

1. 什么是消息认证码 消息认证码(Message Authentication Code)是一种确认完整性并进行认证的技术,取三个单词的首字母,简称为MAC。 消息认证码的输入包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据&#x…

深入分析 Android BroadcastReceiver (六)

文章目录 深入分析 Android BroadcastReceiver (六)1. 广播机制的高级优化策略1.1 使用 Sticky Broadcast(粘性广播)示例:粘性广播(过时,不推荐) 1.2 使用 LiveData 和 ViewModel 进行组件通信示例&#xf…

【题解】—— LeetCode一周小结25

🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 【题解】—— 每日一道题目栏 上接:【题解】—— LeetCode一周小结24 17.最长特殊序列 II 题目链接:522. 最长特殊序列…

Elastaticsearch与SpringBoot集成的互联网的实战分享

以前有过类似的文章,今天升级版分享重磅内容,Elastaticsearch与SpringBoot集成的互联网的实战。 一、需求分析: 起因是这样的,产品有这样一个需求:数据中的标题、内容、关键词等实现结构化搜索和半结构化搜索、数据时…

[SAP ABAP] 内表

内表是在程序中定义,仅在程序运行时间内,存在于内存中的表格,用于暂时存储数据库表中的数据,实现复杂的数据操作 内表中存放的数据是临时的,当程序执行时才会占用内存,关闭程序时会释放内存 内表的种类 ①…

MyBatis-Plus常用注解详解与实战应用

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了大量的常用注解,使得开发者能够更方便地进行数据库操作。 MyBatis-Plus 提供的注解可以帮我们解决一些数据库与实体之间相…

车辆数据的提取、定位和融合(其二.一 共十二篇)

第一篇: System Introduction 第二篇:State of the Art 第三篇:localization 第四篇:Submapping and temporal weighting 第五篇:Mapping of Point-shaped landmark data 第六篇:Clustering of landma…

论坛实现随机发帖的学习

1、badboy操作,录制发帖全过程,录制结果保存,生成为.jmx格式的文件 2、在Jmeter中打开该.jmx文件,重命名,便于了解步骤 3、生成结果树,查看所以步骤是否正确 4、实现随机发帖。。。。还没写完

Vue2配置前端代理

在8080向5000请求数据 clivue2 一、cli内配置前端代理 1、使用 发送请求时写8080 在配置文件中配置 vue.config.js 2、缺点 无法配置多个代理无法控制某个请求知否要代理 二、方式二 module.exports {devServer: {proxy: {/api1:{ //匹配所有以/api1开头的请求路径…

【Docker】Docker简介_运行原理

1、简介 1.1基本概念 容器:容器是Docker的基本部署单元。它是一个轻量级的、独立的运行时环境,包含应用程序及其相关依赖。容器利用Linux内核的命名空间和控制组技术,实现了隔离性和资源管理,使得应用程序在不同的容器中运行不会…

上海交大阿里巴巴推出虚拟试衣新里程碑式工作——AnyFit:任意场景、任意组合!

文章链接:https://arxiv.org/pdf/2405.18172 工程链接:https://colorful-liyu.github.io/anyfit-page/ 今天和大家一起学习的是一种名为AnyFit的新型虚拟试穿系统,旨在解决现有技术在处理不同场景和服饰组合时出现的衣物风格不匹配和质量下…

如何在React中使用CSS模块,并解释为什么使用它们比传统CSS更有益?

在React中使用CSS模块是一种将CSS类名局部化到单个组件的方法,从而避免了全局作用域中的类名冲突。CSS模块允许你为组件编写样式,并确保这些样式只应用于该组件,而不会影响到其他组件。 以下是在React中使用CSS模块的步骤: 安装C…

g++制作C++动态库的简洁例程

g制作C动态库的简洁例程 code review! 文章目录 g\制作C动态库的简洁例程1. 创建 C 动态库1.1 动态库源文件1.2 编译动态库 2. 使用动态库2.1 命令行编译链接然后运行2.2 使用 CMake 编译链接然后运行 3.附加笔记:关于运行时是否能找到libmylib.so的问题汇总3.1.g -…

Vite: 前端环境的基础搭建

Vite初始化前端项目 初始化 $ pnpm create viteLibrary/pnpm/store/v3/tmp/dlx-42133 | Progress: resolved 1, reused 0, downlLibrary/pnpm/store/v3/tmp/dlx-42133 | 1 Library/pnpm/store/v3/tmp/dlx-42133 | Progress: resolved 1, reused 0, downlLib…

C语言 | Leetcode C语言题解之第188题买卖股票的最佳时机IV

题目: 题解: int maxProfit(int k, int* prices, int pricesSize) {int n pricesSize;if (n 0) {return 0;}k fmin(k, n / 2);int buy[k 1], sell[k 1];memset(buy, 0, sizeof(buy));memset(sell, 0, sizeof(sell));buy[0] -prices[0];sell[0] 0…

193.回溯算法:组合总和(力扣)

代码解决 class Solution { public:vector<int> res; // 当前组合的临时存储vector<vector<int>> result; // 存储所有符合条件的组合// 回溯函数void backtrcing(vector<int>& nums, int target, int flag, int index) {// 如果当前组合的和超过了…

如何下载油管视频

文章目录 1、IDM下载1.1 安装IDM工具1.2 浏览器安装IDM插件 2、命令行工具下载2.1 youtube-dl工具2.1.1 安装使用2.1.2 更新工具 2.2 yt-dlp 工具2.2.1 安装使用2.2.2 保存路径查看当前工作目录指定下载目录示例 2.2.3 保存文件名2.2.4 避坑指南1、请求被拒绝2、其他问题 在全球…

如何打包数据库文件

使用 mysqldump 命令&#xff1a; mysqldump -u username -p database_name > output_file.sql username 是数据库的用户名。database_name 是要导出的数据库名称。output_file.sql 是导出的 SQL 文件名&#xff0c;可以自定义。 示例&#xff1a; mysqldump -u root -p…

Ubuntu/Linux SSH 端口转发

文章目录 Ubuntu/Linux SSH 端口转发概述本地端口转发场景一场景二 参考资料 Ubuntu/Linux SSH 端口转发 概述 SSH, Secure Shell 是一种在网络上用于安全远程登录到另一台机器的工具。除了远程登录以外&#xff0c;ssh 的端口转发是它的另一项强大功能。通过 ssh 端口转发功…

[spring] Spring MVC Thymeleaf(下)

[spring] Spring MVC & Thymeleaf&#xff08;下&#xff09; 上篇笔记讲了一下怎么使用 thymeleaf 作为 HTML 模板&#xff0c;与 Spring MVC 进行沟通&#xff0c;这里主要说一下验证的部分 常用表单验证 一些 Spring MVC 内置的常用验证注解如下&#xff1a; Annota…