文本三剑客之sed

sed和awk的区别:

1. awk主要处理的是列

    sed处理的行

2. awk处理固定长度的列用比较好

    不固定长度的列用sed好处理

一. sed语法&选项

1. 语法

①基本语法,类似cat

② sed 选项 '自身脚本语法'  操作

tips:选项可以没有,但是自身脚本语法操作必须要有。

         单引号双引号无所谓,awk要注意单双引号。

2. 选项

sed选项分两类

① 命令的选项
-e多点编辑 例: sed -n -e  '/^r/p'  -e  '/^b/p'  /etc/passwd
-n关闭自动打印(sed会自动打印,不关用脚本语法中的 ‘p’ 时会打印两次)
-r使用扩展正则
-i实际修改文件的内容
-i.bak实际修改前先备份源文件,会产生一个源文件.bak的文件
② sed自身脚本语法中的命令选项

脚本语法格式:‘地址+命令’

Ⅰ. 不写地址就是全文

Ⅱ .单地址

      #:指定的行

      $:最后一行

Ⅲ .地址范围:
      #,#     #从#行到第#行,3,6 从第3行到第6行
      #,+#   #从#行到+#行,3,+4 表示从3行到第7行
      /pat1/,/pat2/    第一个正则表达式和第二个正则表达式之间的行
      #,/pat/  从#号行为开始找到 pat为止 
      /pat/,#  找到#个/pat/为止

Ⅳ .步进:~

      1~2  奇数行

      2~2  偶数行

Ⅴ .命令选项

p打印查看文件第三行:sed -n ‘3p’  文件名 ,前三行是 '1,3p'
q提前退出打印到第三行就退出:sed ‘3q’  文件名
d删除查看时删掉第三行:sed ‘3d’  文件名
a在某一行的后一行插入内容

在第三行后加入hh  sed 3ahh

(不打开文件的情况下修改文件内容,但没保存到文件里)

i在某一行的前一行插入内容同上,把a换成 i
c把某一行替换成掉同上,把a换成 c
r插入文本内容在第二行后插入文本内容:sed  '2r 要插入的文本名' 
=显示行号一般不用

3. 用法举例

① 例:查找几点几分到几点几分之间的日志(/pat1/,/pat2/)

 sed  -n  '/几点几分/,/几点几分/p'   日志文件

② 例:修改文件内容

sed  -i  '2a \ hehe\nhaha'  文件名  
\表示空格    \n 表示换行

二. 搜索替代

脚本命令里面可以用s///来搜索替代,类似vim的s///

1. 普通用法

(地址)s/旧字符/新字符/修饰符,

tips:旧字符可以用表达式,新字符不可以

修饰符:
修饰符效果
g行内全局替换
p显示替换成功的行
w/PATH/FILE 将替换成功的行保存至文件中
I,i忽略大小写

例:把/etc/passwd里面的root后面加上er

2. 分组后项引用

tips:只有扩展正则式才支持分组

举例讲解
① 基本用法

② 高阶用法 筛选(.*)

常用公式:sed -nr 's/旧字符/\1/p'        (1:要选择留下的组。p:打印出来)

例:筛选出网卡信息中的IP地址

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

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

相关文章

chatgpt prompt提示词

ChatGPT 最近十分火爆,今天我也来让 ChatGPT 帮我阅读一下 Vue3 的源代码。 都知道 Vue3 组件有一个 setup函数。那么它内部做了什么呢,今天跟随 ChatGPT 来一探究竟。 实战 1.setup setup 函数在什么位置呢,我们不知道他的实现函数名称&…

Vue路由嵌套和携带参数的几种方法

1、路由嵌套 路由嵌套逻辑: router.index.js中使用children嵌套子路由 //该文件专门用于创建整个文件的路由器 import VueRouter from vue-routerimport About from "/pages/About"; import Home from "/pages/Home"; import News from "…

基于Python+requests编写的自动化测试项目-实现流程化的接口串联

框架产生目的:公司走的是敏捷开发模式,编写这种框架是为了能够满足当前这种发展模式,用于前后端联调之前(后端开发完接口,前端还没有将业务处理完毕的时候)以及日后回归阶段,方便为自己腾出学(m…

【C语言加油站】函数栈帧的创建与销毁 #保姆级讲解

函数栈帧的创建与销毁 导言一、计算机硬件1.冯•诺依曼机基本思想2.冯•诺依曼机的特点:3.存储器3.1 分类3.2 内存的工作方式3.3 内存的组成 4.寄存器4.1 基本含义4.2 寄存器的功能4.3 工作原理4.4 分类4.4.1 通用寄存器组AX(AH、AL):累加器BX(BH、BL)&a…

解决ant-design-vue中Select组件v-model值为空字符串不显示placeholder的bug

方法一: 1.找到node_modules/ant-design-vue/es/vc-select/SingleSelector.js文件 搜索renderPlacehoder方法 将其修改为 const renderPlacehoder () > {const list props.values.filter(val > val.value ! );if (list[0]) {return null}... }2.在此文件中…

viple模拟器使用(三):unity模拟器中实现沿右墙迷宫算法

沿右墙迷宫算法原理 默认直行;右侧有路,则右转;前方无路,则左转。 由于unity模拟器中使用机器人移动动力控制和机器人转动角度控制来实现控制机器人前进、后退、暂停、左转、右转 。 程序编写 主机以及配置 通过内建事件初始化机…

Spring Security(安全框架,必须登录成功才能访问指定资源)

一、背景知识 1、Spring Security 是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(IOC: 控制反转Inversion of Control ,DI:D…

.mat格式文件是什么?及将png,jpg,bmp,gif,tiff,psd等格式图片转为.mat格式(附代码)

很多深度学习网络的输入要求为.mat格式,当然也可以直接修改输入数据的代码,比如修改为使用OpenCV读取图片等,但有些网络修改起来比较麻烦,且.mat数据有很多优势,所以部分网络最好还是用默认的.mat格式数据 目录 一、.…

门店管理系统小程序作用是什么

随着互联网深入各个行业、线下实体店面临很多经营痛点,加之消费升级,如今的消费者更依赖于线上寻找服务及订购服务、咨询等,同时在门店享受服务时,也更注重便捷高效化,加之商家管理经营困难,很多方面都难以…

吴恩达《机器学习》10-6-10-7:学习曲线、决定下一步做什么

一、学习曲线 1. 学习曲线概述 学习曲线将训练集误差和交叉验证集误差作为训练集实例数量(m)的函数绘制而成。这意味着从较少的数据开始,逐渐增加训练集的实例数量。该方法的核心思想在于,当训练较少数据时,模型可能…

csv文件EXCEL默认打开乱码问题

这里讨论的问题是,当用记事本打开带有中文字符的csv正常时,用excel打开却是乱码。 简单概括就是:编码问题,windows的 excel打开csv文本文件时,默认使用的是系统内的ANSI,在中文环境下就是GB2312。如果写文件…

走近“中国深度-深海探索主题展”,带你探索深海远洋

深海,自古以来给予了人类无限的遐想,随着时代的进步和科学的发展,海洋的神秘面纱被一点点揭开,呈现在我们面前的是一个资源宝库,“可上九天揽月,可下五洋捉鳖”已经成为现实,21世纪是海洋的世纪…