sed超实用的文本处理工具

sed命令参数表

sed参数说明
a在指定行的后面增加新航
c替换指定行
d删除行
-e多次编辑,多次编辑后这样写回文件。sed -i -e '/^[[:space:]]*#/d' -e '/^$/d' nginx.conf
p打印行
-r激活拓展正则
-n取消默认输出
-i静默编辑,屏幕上不显示编辑后的内容,放在最后。避免与生成备份冲突
-i.bak静默编辑并生成以.bak结尾的原文件
1~2p
2~2p
奇偶序列

sed找行

范围行

  • 查看passwd文件的第3行:-n '3p'
[root@wzyCentos test]# cat -n passwd | head -3 |tail -n +33	daemon:x:2:2:daemon:/sbin:/sbin/nologin
[root@wzyCentos test]# sed -n '3p' passwd 
daemon:x:2:2:daemon:/sbin:/sbin/nologin
  • 查看特定范围的行:-n '3,10p'
[root@wzyCentos test]# sed -n '3,10p' passwd3	daemon:x:2:2:daemon:/sbin:/sbin/nologin4	adm:x:3:4:adm:/var/adm:/sbin/nologin5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin6	sync:x:5:0:sync:/sbin:/bin/sync7	shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown8	halt:x:7:0:halt:/sbin:/sbin/halt9	mail:x:8:12:mail:/var/spool/mail:/sbin/nologin10	operator:x:11:0:operator:/root:/sbin/nologin
  • 只查看passwd文件的第3行和第5行:-n '3p;5p'
[root@wzyCentos test]# sed -n '3p;5p' passwd 3	daemon:x:2:2:daemon:/sbin:/sbin/nologin5	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  • 查看最后一行,'$p'

    拓展:第3行到最后一行 '3,$p'

包含关键词

  • 找到关键词的行:-n '/root/p'

在这里插入图片描述

  • 找到以root开头的行
[root@wzyCentos test]# sed -n /^root/p passno
root:x:0:0:root:/root:/bin/bash

区间行

  • 查找101-105开头的行,比如日志文件中的日期
[root@wzyCentos test]# sed -n /100/,/103/p 1.txt 
100wzy
101zyz
102666
103
查看上午10点-12点的日志:
sed -n '/2024:15:59:51/,/16:00:00/p' access.log
  • 或下半区间没有匹配到,则把上半区间以下的内容全匹配
[root@qwert test]# cat aa
aaa
bbb
ccc
ddd
aaa
bbb
ccc
wzy
[root@qwert test]# sed -n '/aaa/,/ddd/p' aa
aaa
bbb
ccc
ddd
aaa	#aaa下面没有ddd,依然输出了	
bbb
ccc
wzy
  • 如果有多个结尾则以第一个结尾为准

sed匹配奇偶数列

奇数列:以1开始,每次+2[root@wzyCentos test]# seq 10 | sed -n  '1~2p'13579
偶数列:以2开始,每次+2[root@wzyCentos test]# seq 10 | sed -n  '2~2p'246810
  • 同理也可以用于隔行删除
[root@qwert test]# seq 10 | sed '1~2d'
2
4
6
8
10

sed替换s#XX#YY#g

s:substitute替换;

g:global全局(否则只替换每一行第一个匹配到的内容)

#的另外2个平替/和@

[root@wzyCentos test]# sed 's#baidu#wzy#g' replace 
pan.wzy.com

替换命令tr

  • tr语法:tr ‘要被替换的字符’ ‘替换后的字符’
[root@wzyCentos ~]# echo 'wzy 666'|tr 'wzy' 'www'
www 666

sed条件替换/删除

条件:第X行,以X开头

动作:替换、删除

仅对指定行进行替换:‘3,5s#root#wyy#g’

  • 对包含root的行进行替换
  • 区间范围’1,10s@root@wzy@g’,替换1-10行中的root为wzy

边界符

  • 精确匹配要替换的内容
sed 's#\bbin\b#QQQ#g'
sed 's#\<bin\>#QQQ#g' pass5
  • 匹配身份证号
egrep '[0-9]{17}[0-9X]{}'

替换passwd文件中的bin为QQQ,而不替换sbin。同grep的精确匹配

sed重组(后向引用)

  • 应用场景:处理一行中的某个部分,类似awk取列

  • 使用格式:s###g

    1️⃣前2个#内,通过正则和()对字符进行分组;

    2️⃣后面2个井号之间通过\数字,去调用前面分组的内容

⭐️案例1.echo 12345678 | sed -r 's#(1)(.*)(8)#\1<\2>\3#g',#也可以替换为@或/

最终结果:1<234567>8

第一个分组:用()包裹1得到第一个分组(1)
第二个分组:用.*表示2-7,再用()包裹.*得到第二个分组(.*)
\1表示匹配第一个分组即1,\2表示第二个分组即2-7,...最后用<>包裹第二个分组得到<234567>

在这里插入图片描述

sed重组排序

  • 重新排序
[root@wzyCentos test]# echo 12345678 |sed -r 's#(1)(.*)(8)#\3\2\1#g'
82345671
  • 把passwd文件中的最后一列和第一列互换位置

替换前:apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

替换后:/sbin/nologin:x:48:48:Apache:/usr/share/httpd:apache

第一列:apache,表示为^(.*)

第二列::x:48:48:Apache:/usr/share/httpd:,表示为(:x.*😃,含义以:x开头,中间任意字符,以:结尾

			尝试使用(:x.*:$)表示没有用

第三列:/sbin/nologin表示为(.*)

所以最终:sed -r 's@^(.*)(:x.*:)(.*)@\3\2\1@g'

流程图为:

在这里插入图片描述

  • 找出ip地址

inet 192.168.43.70/24 brd 192.168.43.255 scope global noprefixroute ens33

sed -r 's#^.*net (.*)/.*#\1#'

❓前面不能用.*t $表示

还要显示掩码怎么做?

ip address show ens33|sed -n '3p' | awk '{print $2}'

📨ip I可以直接显示出ip

  • 结合之前的至少出现X次重组

权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root)

要求:提取出0644权限

原理:0644是连续4次的数字,即[0-9]{4}

答案:省略

sed+bash执行命令

[root@qwert test]# seq 3|sed -r 's@(.)@touch \1.txt@g'
touch 1.txt
touch 2.txt
touch 3.txt
[root@qwert test]# seq 3|sed -r 's@(.)@touch \1.txt@g'|bash

sed删除

语法:'/XX/d'

说明:把XX给删除

  • 把ssh_config中的空行和#号行去掉
sed -r  '/^#|^$/d' /etc/ssh/ssh_config
sed -rn '/^#|^$/!p'
同理awk的示例:awk '!/^#|^$/' /etc/ssh/ssh_config!表示取反

删除行

  • 删除第3行'3d'
  • 删除2-5行'/2,5d/'
  • 删除最后一行'$d'

删除以xx开头的行

  • 删除包含root的行'/root/d',删除以root开头的行'/^root/d',拓展…

删除区间行

  • 删除第5行到最后一行,'5,$d'

sed增加

  • a append 在指定行后面追加内容

  • i insert 在指定行上面插入一行

  • c replace 替换指定行的内容

  • i上方增加

准备工作:seq 5 >> seq

[root@wzyCentos ~]# sed '2i wzy' seq
1
wzy
2
  • a行后增加
[root@wzyCentos ~]# sed '2a wzy' seq
1
2
wzy
3
  • c替换指定行的内容,把第2行的2替换为wzy
[root@web~]# seq 3
1
2
3
[root@web~]# seq 3 | sed '2c wzy'
1
wzy
3
把selinux改为disabled
sed '7c SELINUX=Disabled' /etc/selinux/config
  • w保存

把文件的的第4行保存为4w.txt

sed  '4w 4w.txt' pass5
[root@qwert test]# cat 4w.txt 
4	adm:x:3:4:adm:/var/adm:/sbin/nologin

-e 多次编辑

第一次编辑:删除第二行wzy内容
第二次编辑:把root替换为ROOT

[root@m01~]# echo -e "root\nwzy"
root
wzy
[root@m01~]# echo -e "root\nwzy"|sed -e '2d' -e 's#root#ROOT#g'
ROOT
sed '7c SELINUX=Disabled' /etc/selinux/config
  • w保存

把文件的的第4行保存为4w.txt

sed  '4w 4w.txt' pass5
[root@qwert test]# cat 4w.txt 
4	adm:x:3:4:adm:/var/adm:/sbin/nologin

-e 多次编辑

第一次编辑:删除第二行wzy内容
第二次编辑:把root替换为ROOT

[root@m01~]# echo -e "root\nwzy"
root
wzy
[root@m01~]# echo -e "root\nwzy"|sed -e '2d' -e 's#root#ROOT#g'
ROOT

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

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

相关文章

GPU 环境搭建指南:如何在裸机、Docker、K8s 等环境中使用 GPU

本文主要分享在不同环境&#xff0c;例如裸机、Docker 和 Kubernetes 等环境中如何使用 GPU。 跳转阅读原文&#xff1a;GPU 环境搭建指南&#xff1a;如何在裸机、Docker、K8s 等环境中使用 GPU 1. 概述 仅以比较常见的 NVIDIA GPU 举例&#xff0c;系统为 Linux&#xff0c;…

Vue中父组件通过v-model向子组件传对象参数

描述&#xff1a; Vue中父组件通过v-model向子组件传递一个对象&#xff0c;在子组件实现一个能够对object key-value进行编辑的组件封装。 父组件文件 <form-child v-model"configMap"></form-child>import formChild from /components/formchild.vue i…

mysql数据同步到sql server

准备工作 下载安装sql server express 2019 现在安装SSMS(连接数据库GUI) 安装ssms for mysql 需要注意的是在上面的步骤中首先需要根据指导安装mysql ODBC 设置express sa用户密码登录 --change password for login user "sa"Security > Logins > sa (rig…

如何解决企业业务流程分散的痛点

企业面临的一个普遍问题是业务流程的分散。业务流程分散不仅使得工作效率大幅下降&#xff0c;还增加了出错的风险&#xff0c;影响了企业的整体运营效率。因此&#xff0c;解决这一问题成为了许多企业亟需面对的挑战。 业务流程分散的原因 业务流程分散的根本原因&#xff0…

融入模糊规则的宽度神经网络结构

融入模糊规则的宽度神经网络结构 论文概述创新点及贡献 算法流程讲解模糊规则生成映射节点生成输出预测结果 核心代码复现main.py文件FBLS.py文件 使用方法测试结果示例&#xff1a;使用公开数据集进行本地训练准备数据数据输入模型进行训练实验结果 环境配置资源获取 本文所涉…

SQL常见语法

select * from student; select&#xff1a;选取 from&#xff1a;来源 *&#xff1a;所有栏位 select 姓名&#xff0c;班级&#xff0c;成绩 from students; 选取特定栏位 select 姓名&#xff0c;班级&#xff0c;成绩 from students limit 5;--限制显示拦数 select 姓…

贪心算法-汽车加油

这道题目描述了一个汽车旅行场景&#xff0c;需要设计一个有效的算法来决定在哪几个加油站停车加油&#xff0c;以便最小化加油次数。题目给出了汽车加满油后的行驶距离n公里&#xff0c;以及沿途若干个加油站的位置。我们需要找出一个方案&#xff0c;使得汽车能够完成整个旅程…

yarn报错`warning ..\..\package.json: No license field`:已解决

出现这个报错有两个原因 1、项目中没有配置许可证 在项目根目录package.json添加 {"name": "next-starter","version": "1.0.0",# 添加这一行"license": "MIT", }或者配置私有防止发布到外部仓库 {"priv…

【电子通识】TINA-TI中仿真波形如何配置自动分离曲线?

在实际的TIAN-TI使用中,我们仿真后,输出的波形一般都是叠加的形式输出的。比如下图所示: 有一些更多条曲线且曲线内容不同的仿真,叠加后会更让我们看不清。导致很不方便。 一般这时我们会 选择View->Separate outputs( 分开输出),就可以将不同波形分…

【数据结构】线性表——顺序表

文章目录 一、线性表二、顺序表2.1概念及结构2.2、顺序表接口实现2.2.1、顺序表的动态存储2.2.2、顺序表初始化2.2.3、检查空间判断进行增容2.2.4、顺序表尾插、尾删2.2.5、顺序表头插、头删2.2.6、顺序表查找2.2.7、顺序表在pos位置插入x2.2.8、顺序表删除pos位置的值2.2.9、顺…

【Matlab算法】MATLAB实现基于小波变换的信号去噪(附MATLAB完整代码)

MATLAB实现基于小波变换的信号去噪 结果图前言正文1. 小波变换理论基础1.1 小波变换的数学模型1.2 离散小波变换原理2. 信号去噪方法2.1 去噪算法流程2.2 阈值处理方法3. 核心函数解析3.1 wavedec函数3.2 wthresh函数代码实现4.1 信号生成4.2 小波变换去噪完整代码总结参考文献…

神经网络基础--什么是正向传播??什么是方向传播??

前言 本专栏更新神经网络的一些基础知识&#xff1b;这个是本人初学神经网络做的笔记&#xff0c;仅仅堆正向传播、方向传播进行了讲解&#xff0c;更加系统的讲解&#xff0c;本人后面会更新《李沐动手学习深度学习》&#xff0c;会更有详细讲解;案例代码基于pytorch&#xf…

函数式编程Stream流(通俗易懂!!!)

目录 1.Lambda表达式 1.1 基本用法 1.2 省略规则 2.Stream流 2.1 常规操作 2.1.1 创建流 2.1.2 中间操作 filter map distinct sorted limit ​编辑skip flatMap 2.1.3 终结操作 foreach count max&min collect anyMatch allMatch noneMatch …

AMD-OLMo:在 AMD Instinct MI250 GPU 上训练的新一代大型语言模型。

AMD-OLMo是一系列10亿参数语言模型&#xff0c;由AMD公司在AMD Instinct MI250 GPU上进行训练&#xff0c;AMD Instinct MI250 GPU是一个功能强大的图形处理器集群&#xff0c;它利用了OLMo这一公司开发的尖端语言模型。AMD 创建 OLMo 是为了突出其 Instinct GPU 在运行 “具有…

使用服务器时进行深度学习训练时,本地必须一直保持连接状态吗?

可以直接查看方法&#xff0c;不看背景 1.使用背景2. 方法2.1 screen命令介绍2.2 为什么要使用screen命令2.3 安装screen2.4 创建session2.5 查看session是否创建成功2.6 跳转进入session2.7 退出跑代码的session2.8 删除session 1.使用背景 我们在进行深度学习训练的时候&…

深入了解区块链:Web3的基础架构与发展

在数字时代的浪潮中&#xff0c;区块链技术正逐渐成为Web3的重要基础&#xff0c;重新定义互联网的结构和用户体验。Web3不仅是一个全新的网络阶段&#xff0c;更代表了一种去中心化的理念&#xff0c;强调用户主权和数据隐私。本文将深入探讨区块链在Web3中的基础架构、技术特…

华为大变革?仓颉编程语言会代替ArkTS吗?

在华为鸿蒙生态系统中&#xff0c;编程语言的选择一直是开发者关注的焦点。近期&#xff0c;华为推出了自研的通用编程语言——仓颉编程语言&#xff0c;这引发了关于仓颉是否会取代ArkTS的讨论。本文将从多个角度分析这两种语言的特点、应用场景及未来趋势&#xff0c;探讨仓颉…

【C++笔记】C++三大特性之继承

【C笔记】C三大特性之继承 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C笔记 文章目录 【C笔记】C三大特性之继承前言一.继承的概念及定义1.1 继承的概念1.2继承的定义1.3继承基类成员访问方式的变化1.4继承类模板 二.基类和派生类间的转…

Windows搭建流媒体服务并使用ffmpeg推流播放rtsp和rtmp流

文章目录 搭建流媒体服务方式一安装mediamtx启动meidamtx关闭meidamtx 方式二安装ZLMediaKit启动ZLMediaKit关闭ZLMediaKit 安装FFmpeg进行推流使用FFmpeg进行rtmp推流使用VLC播放rtmp流停止FFmpeg的rtmp推流使用FFmpeg进行rtsp推流使用VLC播放rtmp流停止FFmpeg的rtsp推流 本文…

Polybase要求安装orcale jre 7

在安装SQL SERVER时&#xff0c;遇到以下情况&#xff1a;polybase要求安装orcale jre 7更新 51或更高版本 不想安装JDK7。可通过不安装polybase的功能来实现下一步的安装。 1. 点击上一步&#xff0c;回到功能选择的设置界面中。 2. 然后在功能选择窗口中&#xff0c;取消勾选…