【Linux】sed命令使用

sed 命令

sed全称是:Stream EDitor。

sed 命令是利用脚本来处理文本文件。sed 一次只读取一行文本到缓冲区,然后读取命令,对此行进行编辑,然后读取下一行,重复此过程直到结束。

sed 与 vi 的区别

【Linux】 vi / vim 使用


vi 采用的是交互式文本编辑模式,你可以用键盘命令来交互性地插入、删除或替换数据中的文本。

sed 采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。

sed 是一种非交互式编辑器(即用户不必参与编辑过程),它使用预先设定好的编辑指令对输入的文本进行编辑,完成之后再输出编辑结构

语法

sed [-hnV] [ -e<script>] [-f<script文件>] [文本文件]

sed 命令 -Linux手册页

选项及作用

执行令 : sed  --help

执行命令结果

参数

  • -e<script>或--expression=<script>         以选项中指定的script来处理输入的文本文件。
  • -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
  • -h或--help                     显示帮助。
  • -n或--quiet或--silent          仅显示script处理后的结果。
  • -v 或--version                显示版本信息。
  • -i                                  此选项会直接修改源文件,要慎用。
  • -b, --binary                    以二进制模式打开文件
  • -l N, --line-length=N          指定每行的长度
  • -r, --regexp-extended           在命令中使用扩展的正则表达式
  • -s, --separate                将输入的文件视为需要进行分别处理的单独文件,而不是把它们视为一整个长的输入
  • -u, --unbuffered             从输入文件中加载最少数量的数据,并更频繁地刷新输出
  • -z, --null-data             用NUL符号分隔各行

命令

  • a  在当前行后添加一行或多行
  • c  用新文本修改(替换)当前行的内容
  • d 删除行
  • i  在当前行之前插入文本
  • h 把模式空间里的内容复制到暂存缓存区
  • H 把模式空间里的内容追加到暂存缓存区
  • g 取出暂存缓冲区里的内容,将其复制到模式空间,覆盖该处原有内容
  • G 取出暂存缓冲区里的内容,将其复制到模式空间,追加在原有内容后面l 列出非打印字符
  • p 打印行
  • n 读入下一输入行,并从下一条命令而不是第一条命令开始处理
  • q 结束或退出 sedr 从文件中读取输入行! 对所选行意外的所有行应用命令
  • s 用一个字符串替换另一个
  • g 在行内进行全局替换
  • p 打印行
  • w 将行写入文件
  • x 交换暂存缓冲区与模式空间的内容
  • y 将字符转换为另一字符(不能对正则表达式使用 y 命令)

常用命令示例

命令:cat test8.text 

查看test8.text 文件内容  。

命令:sed -e 4a\程序员识堂在做饭  test8.text

在 test8.text 文件的第四行后添加一行,并将结果输出到标准输出 。

命令: sed '3i\程序员食堂大叔在做饭' test8.text

在 test8.text 文件的第3 行前添加一行"程序员食堂大叔在做饭",并将结果输出到标准输出 。

命令: sed 's/程序员识堂/程序员食堂/' test8.text

在 test8.text 中每行的 程序员识堂  替换为程序员食堂,但只替换每行内匹配到的第一个程序员识堂,并将结果输出到标准输出 。

如果需要替换行内所有的程序员识堂 ,就需要引入命令 g:

命令: sed -n  's/程序员识堂/程序员食堂/p' test8.text

在 test8.text 中每行的 程序员识堂  替换为程序员食堂。-n 选项会禁止 sed 输出,但 p 标记会输出修改过的行 ,将二者匹配使用的效果就是只输出被替换命令修改过的行。


命令:sed -i 's/\r//'   test8.text

转换windows文件  test8.text 中格式为unix,去除\r。

命令: sed '4d' test8.text

在  test8.text  删除第 4 行。

命令:  sed '4,$d' test8.text

在  test8.text  删除第 4 行到最后一行。

命令: sed 'd' test8.text

在  test8.text  删除全部。

命令: sed '1,5d' test8.text

在  test8.text  删除1-5行。

命令:  sed '3c\程序员识堂大叔在刷碗 ' test8.text

在  test8.text  取代指定行,取代内容:程序员识堂大叔在刷碗 。

q

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

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

相关文章

基于docker容器化部署微服务

前言 在笔者系列文章中微服务配置隔离已经完成服务之间的配置隔离&#xff0c;服务整体来说是已经通了。 为了方便后续测试已经环境统一&#xff0c;笔者本章节会对服务进行容器化部署。由于服务器性能问题&#xff0c;本次部署采用maven完成镜像构建&#xff0c;结合docker-c…

C++——C++11(1)

时至今日&#xff0c;C标准已经到了C23&#xff0c;但是你要说哪一次提出的标准最经 典&#xff0c;那C11一定会被人提及&#xff0c;C11带来了数量可观的变化&#xff0c;其中包 含了约140个新特性&#xff0c;以及对C03标准中约600个缺陷的修正&#xff0c;这使得 C11更像是从…

ESP32 连接阿里云 MQTT 报错MQTT Connect err:2

解决方法 跳转到 这个头文件<PubSubClient.h>里 MQTT_MAX_PACKET_SIZE 把这个的大小从原来的256 改为1024 MQTT_KEEPALIVE 把这个大小从原来的15 改为65 修改后再次连接即可成功 如下图&#xff1a;

【C++高阶(七)】C++异常处理的方式

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:C从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 异常处理的方式 1. 前言2. C语言处理异常的方式…

Vim入门

Vim使用入门 1.Vim编辑器的三种常用模式 一般模式&#xff1a;刚打开文件是它&#xff0c;从编辑模式按“ESC”退回的模式也是它。可以执行各种编辑操作&#xff0c;如移动光标、复制、粘贴、删除、查找替换等 ; 编辑模式&#xff1a;在一般模式下按下 i、I、a、A、o、O 等键…

运筹系列87:julia求解随机动态规划问题入门

1. 入门案例&#xff1a;LinearPolicyGraph 看一个简单的数值优化的例子&#xff1a; 我们将其建立为一个N阶段的问题&#xff1a; 初始值为M。 使用SDDP.jl进行求解&#xff1a; using SDDP import IpoptM, N 5, 3model SDDP.LinearPolicyGraph(stages N,lower_bound …

HTTP协议在Linux系统中的运用与代码示范

在Linux系统中&#xff0c;HTTP协议的应用非常广泛&#xff0c;它被用于Web开发、网络爬虫、API调用等场景。了解并掌握HTTP协议&#xff0c;对于Linux系统的开发和使用都非常重要。下面&#xff0c;我们将为您介绍HTTP协议在Linux系统中的运用&#xff0c;并通过代码示范来帮助…

Qt for Android设置安卓程序默认横屏+全屏

我的qt版本是5.14.1&#xff0c;网上查到的方法是&#xff0c;把编译出的build文件夹中的AndroidManifest.xml文件复制出来然后修改&#xff0c;然后把修改后的xml文件加入pro文件&#xff0c;语法为ANDROID_PACKAGE_SOURCE_DIR $$PWD/AndroidManifest.xml&#xff08;具体&am…

我与Datawhale的故事之长篇

Datawhale成员 作者&#xff1a;Datawhale团队成员 前 言 上周五周年文章发出后大家反响比较热烈&#xff1a; 我们与Datawhale背后的故事&#xff01; 本期给大家带来三篇长篇回忆 胡锐峰 我与Datawhale的故事 题记&#xff1a;我和你的相遇就像春风拂面&#xff0c;就像夏雨…

【MATLAB】数据拟合第11期-基于粒子群迭代的拟合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 基于粒子群迭代的拟合算法是一种优化技术&#xff0c;它基于粒子群优化算法&#xff08;PSO&#xff09;的基本思想。该算法通过群体中个体之间的协作和信息共享来寻找最优解。 在基于粒…

【数据结构】八大排序之直接插入排序算法

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 一.直接插入排序简介及思路 直接插入排序(Straight Insertion Sort)是一种简单直观的插入排序算法. 它的基本操作是: 将一个数据插入到已经排好的有序表中,从而得到一个新的,数…

HarmonyOS--基础组件Button

Button组件 可以包含单个子组件。 Button(label?: ResourceStr, options?: { type?: ButtonType, stateEffect?: boolean }) 1&#xff1a;文字按钮 Button(‘点击’) 2&#xff1a;自定义按钮,嵌套其它组件 Button() {Image(https://) }.type(ButtonType.Circle)