sed简单使用

2023-09-21 13:43:00

sed(Stream Editor) 流编辑器, 对标准输出或文件逐行进行处理

语法格式

  • 第一种形式:
    stdout | sed [option] "pattern command"
  • 第二种形式:
    sed [option] "pattern command" file

sed的选项

选项含义
-n只打印模式匹配行
-e直接在命令行进行sed编辑,默认选项
-f编辑动作保存在文件中,指定文件执行
-r支持扩展正则表达式
-i直接修改文件内容

sed.txt

I love python
I love PYTHON

Hadoop is bigdata frame
sed -n -r '/python|PYTHON/p' sed.txt
sed -in 's/love/like/gp' sed.txt

sed中的pattern详解

匹配模式含义
10command匹配到第10行
10,20command匹配从10行开始,20行结束
10,+5command匹配从第10行开始,到第16行结束
/pattern1/command匹配到pattern1的行
/pattern1/,/pattern2/command匹配到pattern1的行开始,到匹配pattern1的行结束
10,/pattern1/command匹配从第10行开始,到匹配到pattern1的行结束
/pattern1/,10command匹配到pattern1的行开始,到第10行匹配结束

sed中的编辑命令详解

类别编辑命令含义
查询p打印
增加a, i, r, w行后追加, 行前追加, 外部文件读入,外部文件读入行后追加, 匹配行写入外部文件
删除d删除
修改s/old/new, s/old/new/g, s/old/new/2g/, s/old/new/ig第一个替换, 整行全部替换, 从第二个到整行替换, 忽略大小写的全行替换

加上**=**标志,就是显示行号

注意在脚本中使用,引用变量的时候,使用双引号

利用sed查询特定内容

查询命令含义
1p打印第一行内容
1,10p打印1-10行内容
1,+5p打印1,1+5行内容数据
/pattern1/p打印每一行中匹配到pattern1的行内容
/pattern1/,/pattern2/p打印匹配到pattern1的行直到匹配到pattern2的所有行的内容为止
/pattern1/,10p打印匹配到pattern1的行到10行的所有行内容
10,/pattern1/p打印第10行直到匹配到pattern1的所有行内容

对于sed提取,可以使用替换删除某些字符,实现剥离
可以多用几个管道实现多重规则

利用sed删除特定内容

查询命令含义
1d删除第一行内容
1,10d删除1-10行内容
1,+5d删除1,1+5行内容数据
/pattern1/d删除每一行中匹配到pattern1的行内容
/pattern1/,/pattern2/d删除匹配到pattern1的行直到匹配到pattern2的所有行的内容为止
/pattern1/,10d删除匹配到pattern1的行到10行的所有行内容
10,/pattern1/d删除第10行直到匹配到pattern1的所有行内容
  1. 删除配置文件中所有的注释行和空行
    sed -i '/[:blank:]*#/d;/^$/d' nginx.confg
  2. 在配置文件中所有不以#开头的行前面添加*符号, 注意:以#开头的行不添加
    sed -i 's/[^#]/\*&/g nginx.conf'

利用sed修改文件内容

查询命令含义
1s/old/new/替换第一行内容
1,10s/old/new/替换1-10行内容
1,+5s/old/new/替换1,1+5行内容数据
/s/old/new/attern1/p替换每一行中匹配到pattern1的行内容
/s/old/new/attern1/,/pattern2/p替换匹配到pattern1的行直到匹配到pattern2的所有行的内容为止
/s/old/new/attern1/,10p替换匹换配到pattern1的行到10行的所有行内容
10,/s/old/new/attern1/p替换第10行直到匹配到pattern1的所有行内容

参考链接

总结

大致和vim一样, 主要是pattern和cmd的理解

更多推荐

java运行以jar包的形式运行和tomcat运行的区别和联系?

Java运行以JAR包形式和Tomcat运行之间存在一些区别和联系:区别:部署方式:JAR包形式的Java应用可以作为独立的进程运行,通过命令行或脚本启动。而Tomcat是一个Web服务器和Servlet容器,需要将应用程序打包成WAR文件并部署到Tomcat中。架构:JAR包形式的应用通常是简单的独立应用,将所有的依

web自动化测试 —— cypress测试框架

一、cypress简介基于JavaScript的前端测试工具可以对浏览器中运行的任何内容进行快速、简单、可靠的测试对每一步操作都支持回看覆盖了测试金字塔模型的所有测试类型【界面测试,集成测试,单元测试】底层协议不采用WebDriver>Cypress官网:https://www.cypress.io/二、cypress

随机抽样一致RANSAC

文章目录RANSAC简介RANSAC算法Ransac在3D视觉中的用法直线拟合单应性矩阵拟合RANSAC的优缺点RANSAC的优点RANSAC的缺点RANSAC在弯曲场景中的缺点:RANSAC适用场景RANSAC简介RANSAC是RANdomSAmpleConsensus的缩写,中文翻译叫随机采样一致。它可以从一组观测

嵌入式开发环境Vscode开发STM32单片机程序

STM32单片机非常强大,大多数教程都是使用keil编译器,keil是收费的而gcc是开源免费的。这里介绍一些使用gcc+vscode开发单片机程序的经验。(这里不解释gcc是什么)。​第一:环境准备gccARM开发者官网https://developer.arm.com/我有个习惯:尽量使用免安装版软件,直接解压到软

华为云云耀云服务器L实例评测-搭建基于hexo的个人博客

1、演示访问地址:演示传送门开头先来一个效果图。2、准备服务器前面有介绍了一下华为云云耀云服务器L实例评测以及简单的配置用法,具体可以看上篇的博客。https://blog.csdn.net/yongqing_/article/details/132867889我这里用的是华为云云耀云服务器L实例,2核2G的配置。然后

Python 数独求解器

文章目录使用回溯算法在Python中解决数独总结Sudoku(数独)是一种基于逻辑的数字填充谜题游戏,最受喜爱的是那些热爱逻辑和推理的人。解决数独谜题有助于提高集中注意力和逻辑思维能力。本文介绍了如何使用Python解决数独谜题。使用回溯算法在Python中解决数独在寻找计算问题的解决方案时,我们经常使用回溯算法。在解

关于安卓SVGA浅尝(一)svgaplayer库的使用

关于安卓SVGA浅尝(一)使用相关链接SVGA官网SVGA-github说明文档背景项目开发,都会和动画打交道,动画的方案选取,就有很多选择。如Json动画,svga动画,gif等等。各有各的优势。目前项目中用到了svga的动画,因此,就有了这一系列的文章。使用(1)引入首先,引入的方式,大致有两种:一种是直接使用远程

玩玩“小藤”开发者套件 Atlas 200I DK A2 之部署智能语音助手

玩玩“小藤”开发者套件Atlas200IDKA2之部署智能语音助手0.背景1.安装flac2.创建自签名证书3.创建虚拟环境4.安装PyTorch5.安装PyTorch插件torch_npu6.安装APEX混合精度模块7.安装依赖库8.使用gradio启动智能语音助手9.访问智能语音助手0.背景总所周知,英伟达的GPU

c++编译过程-各阶段任务

首先,g++在编译源代码时,会经历下面几个阶段-E首先进行预处理,还是源代码格式.i-S编译器生成汇编语言.s-c汇编器生成二进制文件.o-链接库文件,其他代码.out一.预处理预处理主要是1.将#宏定义进行展开,2.将头文件内容替换3.去掉注释二.编译编译主要是将预处理后的代码转换成汇编语言:1.对代码进行语法分析,

AndroidUtil - 强大易用的安卓工具类库

官网https://github.com/Blankj/AndroidUtilCode/blob/master/README-CN.md项目介绍AndroidUtilCode🔥是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的Demo和单元测试,利用其封装好的APIs可以大大提高开发效率,如

解锁黑科技!群晖管家+cpolar内网穿透,让你的本地黑群晖实现公网远程访问!

白嫖怪狂喜!黑群晖也能使用群晖管家啦!文章目录白嫖怪狂喜!黑群晖也能使用群晖管家啦!1.使用环境要求:2.下载安装群晖管家app3.随机地址登陆群晖管家app4.固定地址登陆群晖管家app自己组装nas的白嫖怪们虽然也可以通过在局域网使用黑群晖,但是群晖quickconnect需要绑定正版群晖账号,那么白嫖怪们要怎样在

热文推荐