sed 流式编辑器

使用方式:

1,前置指令 | sed 选项  定址符指令

2,sed 选项  定址符指令   被处理文档

选项:

-n 屏蔽默认输出

 -i写入文件 

 -r支持扩展正则

指令:

p输出 

 d删除 

 s替换

    sed -n '1p' user        //输出第1行

   sed -n '2p' user    //输出第2行

   sed -n '3p' user    //输出第3行

   sed -n '2,4p' user   //输出第2~4行

   sed -n '2,+1p' user  //输出第2行以及后面1行

   sed -n '2p;4p' user  //输出第2行,第4行

sed -n '/^root/p' user  //在sed中使用正则表达式输出以root开

头的行

   grep "^root" user  //效果同上

 egrep"^root|^bin" user  //找root或者bin开头的行 

 sed -nr '/^root|^bin/p' user  //在sed中查找,-r使用扩展正

则,效果同上

   sed -n '=' user    //查看所有行号

 sed -n '$=' user   //查看最后一行的行号,相当于查看文档

总共有几行

   

  sed  '1d' user   //删第1行

  sed  'd' user   //删所有

  sed  '3d' user  //删第3行

  sed  '2,5d' user   //删2~5行

  sed  '4,+2d' user  //删4行以及后面2行

  sed  '1d;3d' user   //删第1行,第3行

sed  '$d' user   //删除最后一行

  sed -n '$p' user  //查看最后一行

sed -n '1!p' user   //查看除了第1行以外的行, !代表取反

sed中的替换,使用 s/old/new/

vim test.txt    //准备素材,写入下列内容

2017 2011 2018

2017 2017 2024

2017 2017 2017

sed 's/2017/8888/' test.txt  //替换所有行的第1个2017为8888

sed '1s/2017/8888/' test.txt  //替换第1行的第1个2017

sed '2s/2017/8888/' test.txt  //替换第2行

sed '1,2s/2017/8888/' test.txt  //替换1~2行

sed 's/2017/8888/2' test.txt   //替换所有行的第22017

sed 's/2017/8888/3' test.txt   //替换所有行的第3个2017

sed '/2011/s/2017/8888/' test.txt  //替换有2011的行的第12017

sed 's/2017/8888/g' test.txt   //替换所有行的所有个

sed -n 's/root/6666/p'  /etc/passwd  //替换每行第1个root,并只显示被替换的行

sed -n 's/root/6666/2p'  /etc/passwd  //替换每行第2个root,并只显示被替换的行

sed -n 's/root/6666/gp'  /etc/passwd  //替换每行的所有root

sed '3s/2017/8888/;3s/2017/8888/' test.txt  //替换第3行的第1个和第2个2017

------------------------------------------------------------

尝试将user文档中的/bin/bash替换成/sbin/sh

sed 's//bin/bash//sbin/sh/' user    //常规手段替换,内容会与替换冲突,替换失败

sed 's/\/bin\/bash/\/sbin\/sh/' user  //使用\转义符号,可以成功,但不方便

sed 's!/bin/bash!/sbin/sh!' user   //更改替换的间隔符号是最理想方法

sed 's(/bin/bash(/sbin/sh(' user   //效果同上

Seds替换的高级应用

1)删除文件中每行的第二个、最后一个字符

sed 's/.//2;s/.$//' test    分两个步骤完成,中间用分号

隔开,第一步将每行的第二个任意字符替换成空,第二

步将每行的最后一个任意字符替换成空即可

2)删除文件中所有的数字

sed -i 's/[0-9]//g' test    先找到任意数字,然后都替换成空

3)将文件中每行的第一个、倒数第1个字符互换

echo abc > abc            //创建素材

sed -r 's/(a)(b)(c)/\3\2\1/' abc  //替换abc时复制每一个字符,后面替换的内容用\数字粘贴,可以任意调换位置

echo xyz >> abc   //追加内容

sed -r 's/(a)(b)(c)/\3\2\1/' abc  //再用之前的方法无法替换第2行

sed -r 's/(.)(.)(.)/\3\2\1/' abc  //将具体字符用 . 替代即可将文档中的xyz修改成xyaz时,上述方案失灵

sed -r 's/^(.)(.*)(.)$/\3\2\1/' abc   //再次升级,分别找到第1个字符和最后1个字符,中间可以是任意

sed -r 's/^(.)(.*)(.)$/\3\2\1/' test   //达成需求

4)为文件中每个大写字母添加括号

sed -r 's/([A-Z])/(\1)/g' test  //先找到任意大写字母,然后保留,最后替换成带括号的状态

练习:

编写脚本,安装httpd服务,使用82号端口

#!/bin/bash

yum -y install httpd

sed -i '/^Listen 80/s/80/82/' /etc/httpd/conf/httpd.conf   //找到有Listen 80开头的行,替换80为82

systemctl restart httpd

运行脚本之后,使用curl 192.168.4.7:82测试或者火狐浏览器192.168.4.7:82

要关闭selinux与防火墙

setenforce 0    //如果脚本执行之前没关闭selinux,会报错

systemctl stop firewalld

--------------------------------------------------------------------

sed中除了常用的p d s 三个指令,还有a行下追加  i行上添加  c替换整行

sed 'a 666' user  //在所有行下追加666

sed '1a 666' user  //第1行下追加666

sed 'i 666' user   //所有行上添加666

sed '3i 666' user  //第3行上添加666

sed '2a 666' user   //第2行下追加666

sed 'c 666' user   //所有行替换成666

sed '/root/c 666' user  //找到有root的行替换成666

编写脚本,找到系统使用bash的账户名,然后按照“用户名 --> 密码” 的格式存储在一个文件中

"\s"可以匹配tab键和空格所敲出来的空格。

"\w"匹配数字、字母、下划线

sed的其它指令:

”a“行下追加,逐行处理,如果只处理第一行就用”1a“

”i“行上添加

”c“替换整行

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

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

相关文章

sklearn随机森林 测试 路面点云分类

一、特征5个坐标 坐标-特征-类别 训练数据 二、模型训练 记录分享给有需要的人,代码质量勿喷 import numpy as np import pandas as pd import joblib#region 1 读取数据 dir D:\\py\\RandomForest\\ filename1 trainRS filename2 .csv path dirfilename1file…

flutter的CircularProgressIndicator基本使用

CircularProgressIndicator 循环进度指示器视图 定义及作用 循环进度指示器视图。在页面绘制一个循环进度指示器视图。 参数 const CircularProgressIndicator({super.key,super.value,super.backgroundColor,super.color,super.valueColor,this.strokeWidth 4.0,//条的宽…

宝塔是可以切换mongodb版本的

在软件商店,搜索monggodb,点击设置。点击第三个标签版本切换即可。但是前提要删除所有非系统数据库。 删除数据库方法: 要在 MongoDB 中删除一个数据库,可以使用 dropDatabase() 命令。请注意,在执行此操作之前&#x…

flink使用事件时间时警惕kafka不同分区的事件时间倾斜问题

背景 flink和kafka的消息组合消费模式几乎是实时流处理的标配,然后当在flink中使用事件时间处理时,需要注意kafka不同分区元素之间时间相差太大的问题,这样有可能会导致严重的数据堆积问题 kafka不同分区元素事件时间差异较大导致的问题 总…

〖大前端 - 基础入门三大核心之JS篇㊼〗- BOM基础之window对象

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 从事过全栈研发、产品经理等工作&#xf…

监控WebLogic

1.脚本监控weblogic Linux Shell 脚本监控 WebLogic 的运行状态、健康状态、打开的套接字数 通常情况下,我们不建议在脚本中直接明文写入密码。因为这很容易被他人窃取并滥用。 例如,在终端中使用以下命令设置环境变量: export WEBLOGIC_PAS…

ElasticSearch 谈谈你对段合并的策略思想的认识

段合并是Elasticsearch中的一个重要概念,它在数据索引和查询过程中起着关键的作用。Elasticsearch使用Lucene作为其全文搜索库,Lucene中使用的数据结构就是段(Segment)合并。 段合并的策略思想主要体现在以下几个方面&#xff1a…

算法工程师-机器学习面试题总结(4)

目录 1.常用的距离衡量公式都有哪些?具体说明它们的计算流程,以及使用场景? 2.介绍一下Kd树?如何建树,以及如何搜索最近节点? 3.简单讲解SVM模型原理? 4.SVM为什么会对缺失值敏感&#xff1f…

【7】PyQt布局layout

目录 1. 布局简介 2. 水平布局QHBoxLayout 3. 竖直布局QVBoxLayout 4. 表单布局QFormLayout 5. 布局嵌套 1. 布局简介 一个pyqt窗口中可以有多个控件。所谓布局,指的就是多个控件在窗口中的展示方式 布局方式大致分为: 水平布局竖直布局网格布局表单布局 2. 水平布局Q…

OpenCV-python下载安装和基本操作

文章目录 一、实验目的二、实验内容三、实验过程OpenCV-python的安装与配置python下载和环境配置PIP镜像安装Numpy安装openCV-python检验opencv安装是否成功 openCV-python的基本操作图像输入和展示以及写出openCV界面编程单窗口显示多图片鼠标事件键盘事件滑动条事件 四、实验…

51单片机程序

利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器O以500MS速度进行流水灯从土至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后&#xff…

【Gradle】mac环境安装Gradle及配置

官网安装说明:Gradle | Installation 由于Gradle运行依赖jvm,所以事先需要安装jdk,并确认你的jdk版本和gradle版本要求的对应关系,这个官网上有说明,但是我试了一下不太准确,供参考,链接如下&a…

鸿蒙一出,android开发处境再受重创

华为宣布其自研操作系统鸿蒙HarmonyOSNEXT开发者预览版将不再兼容安卓系统,这一消息引起了广泛关注和热议。这一决策标志着华为正式告别安卓,摆脱了外部的制约,开始着手打造一个全新的生态系统。 鸿蒙系统4发布一个月,截至目前&a…

Apache Flink(七):Apache Flink快速入门 - DataStream BATCH模式

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 下面使用Java代码使用DataStream…

介绍 Apache Spark 的基本概念和在大数据分析中的应用。

Apache Spark 是由 Apache 软件基金会开发的开源框架,帮助在多台计算机上以分布式方式执行计算任务。Spark 提供了一种高度可扩展的计算模型,能够快速地在大规模数据集上进行数据处理和分析。 Spark 有以下几个核心概念: RDD(Res…

Apache Ofbiz XML-RPC RCE漏洞复现(CVE-2023-49070)

0x01 产品简介 Apache OFBiz是一个开源的企业资源规划(ERP)系统,提供了多种商业功能和模块。 0x02 漏洞概述 漏洞成因 2020年,为修复 CVE-2020-9496 增加权限校验,存在绕过。2021年,增加 Filter 用于拦截 XML-RPC 中的恶意请求,存在绕过。2023年四月,彻底删除 xmlrp…

链路追踪详解(三):分布式链路追踪标准的演进

目录 Google Dapper Twitter Zipkin Uber Jaeger OpenTracing 和 OpenCensus OpenTelemetry 小结 分布式链路追踪是现代云计算和微服务架构中一个关键技术,可以让开发者和运维团队理解和监控服务请求在复杂系统中的完整流转路径。分布式链路追踪技术的发展经历…

C/C++,数值计算——快速幂(Quick Pow)的几种算法源代码

1 文本格式 // C Version long long binpow(long long a, long long b) { if (b 0) return 1; long long res binpow(a, b / 2); if (b % 2) return res * res * a; else return res * res; } // C Version long long binpow(long long a,…

10.Java程序设计-基于SSM框架的微信小程序家教信息管理系统的设计与实现

摘要是论文的开篇,用于简要概述研究的目的、方法、主要结果和结论。以下是一个简化的摘要示例,你可以根据实际情况进行修改和扩展: 摘要 随着社会的发展和教育需求的增长,家教服务作为一种个性化的学习方式受到了广泛关注。为了更…

nodejs微信小程序+python+PHP新闻发布系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…