sed工具的基本使用

文章目录

  • sed工具介绍
    • 什么是sed工具,有什么用
    • sed命令执行流程
      • sed是按行读取文件的
      • 每当读取一行内容,都会进行一次判断,判断是否是想要的行
      • 默认不实质改变文件内容,仅临时输出给用户看(除非加-i选项)
      • 例1
    • 例2
  • sed工具中的定界符
      • 定界符的使用
      • 使用定界符的示例
  • -n选项
  • -p选项
    • 打印从带有关键字1行到关键字2行的内容
    • 打印除关键字行外的其他行
  • -d选项
    • 删除第一行
    • 删除最后一行
    • 删除从关键字1行到关键字2行的内容
  • -c和-a和-i选项
    • -a选项
      • 在文件最后一行后追加一行指定内容
      • 在文件的指定第几行后追加一行指定内容
      • 在文件每一行后追加一行指定内容
    • -i选项
      • 在文件指定第几行前插入一行指定内容
      • 在文件每一行前插入一行指定内容
    • -c选项
    • -s和-g选项
      • 将所有个位数为几的字符替换为666
  • sed的模式空间
    • 如何使用sed将文件中的回车替换成空格?
      • 使用“N;”
        • 一个“N;”和多个“N;”
  • sed的后项引用
    • 什么是后项引用?
    • 如何使用sed截取指定网卡的IP
    • 后项引用的具体语法?

sed工具介绍

什么是sed工具,有什么用

sed命令执行流程

sed是按行读取文件的

每当读取一行内容,都会进行一次判断,判断是否是想要的行

默认不实质改变文件内容,仅临时输出给用户看(除非加-i选项)

例1

以下面的命令执行流程为例:

sed '4p' ./1.txt
  • 如果加了-n选项,就会读取下一行

  • 如果不加-n,会将所有的文件内容输出来,继续读取下一行

  • 如果是想要的行,那么将第四行的内容执行相应的动作(-p -d -s -a -i -c等)

  • 动作处理完毕之后,输出对应的指定内容(只打印第四行内容)

  • 即使读取完毕,内容也输出完毕,sed命令也会继续往后读,直到文件的最后一行为止
    (如果加了-n选项,那么不仅打印第四行内容,还会打印文件所有内容)

在这里插入图片描述
这里的p的意思是print,不实质改变文件内容,仅临时输出给用户看
在这里插入图片描述

例2

sed -n '2p' ./1.txt
sed '2p' ./1.txt

在这里插入图片描述

sed工具中的定界符

sed(stream editor)是一个流编辑器,用于对文本数据进行过滤和转换。在 sed 命令中,定界符是用来界定模式(pattern)和替换字符串(replacement)的字符。默认情况下,sed 使用正斜杠 / 作为定界符,但你可以指定任何字符作为定界符,只要这个字符在模式或替换字符串中没有出现。

定界符的使用

  1. 默认定界符:默认情况下,sed 使用 / 作为定界符。
   sed 's/old/new/g' file.txt

这个命令将 file.txt 文件中的所有 “old” 替换为 “new”。

  1. 自定义定界符:如果你的模式或替换字符串中包含正斜杠 /,你可以使用其他字符作为定界符。例如,使用井号 #
   sed 's#/old/#/new/#g' file.txt

这个命令将 file.txt 文件中的所有 “/old/” 替换为 “/new/”。

  1. 使用反斜杠:如果你选择的定界符是反斜杠 \,你需要使用两个反斜杠 \\ 来表示一个反斜杠字符。
   sed 's\\old\\new\\g' file.txt
  1. 使用竖线:竖线 | 也可以作为定界符。
   sed 's|old|new|g' file.txt
  1. 使用空格:空格也可以作为定界符。
   sed 's old new g' file.txt
  1. 使用其他特殊字符:任何不是模式或替换字符串一部分的字符都可以作为定界符。
   sed 's@old@new@g' file.txt

使用定界符的示例

假设你有以下内容的文件 example.txt

hello world
this is a test
hello again
  1. 将 “hello” 替换为 “hi”
   sed 's/hello/hi/g' example.txt

输出:

   hi worldthis is a testhi again
  1. 使用自定义定界符
    如果你想要替换的字符串中包含正斜杠 /,你可以使用其他定界符,例如 #
   sed 's#/hello/#/hi/#g' example.txt

输出:

   hi worldthis is a testhi again
  1. 使用多行模式
    你可以使用定界符来定义多行模式,例如删除包含 “hello” 到 “again” 的行:
   sed '/hello/,/again/d' example.txt

输出:

   this is a test

通过自定义定界符,你可以更灵活地处理包含特殊字符的文本数据,使得 sed 命令更加强大和灵活。
在这里插入图片描述

-n选项

取消默认输出(默认是将文件内容都输出的)

-p选项

在这里插入图片描述

打印从带有关键字1行到关键字2行的内容

在这里插入图片描述

打印除关键字行外的其他行

在这里插入图片描述

-d选项

删除第一行

在这里插入图片描述

删除最后一行

在这里插入图片描述

删除从关键字1行到关键字2行的内容

在这里插入图片描述
在这里插入图片描述

-c和-a和-i选项

-c——replace
-a——append
-i——insert

-a选项

在文件最后一行后追加一行指定内容

在这里插入图片描述

在文件的指定第几行后追加一行指定内容

在这里插入图片描述

在文件每一行后追加一行指定内容

在这里插入图片描述

-i选项

在文件指定第几行前插入一行指定内容

在文件每一行前插入一行指定内容

在这里插入图片描述

-c选项

在这里插入图片描述

-s和-g选项

用于替换文件内容
s:substitute
g:global

在这里插入图片描述

将所有个位数为几的字符替换为666

在这里插入图片描述

sed的模式空间

如何使用sed将文件中的回车替换成空格?

有个问题:
在这里插入图片描述
解决问题:

使用“N;”

一个“N;”和多个“N;”

在这里插入图片描述

在这里插入图片描述

sed的后项引用

什么是后项引用?

如何使用sed截取指定网卡的IP

问题:
在这里插入图片描述
解决:
在这里插入图片描述

后项引用的具体语法?

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

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

相关文章

1024 程序员节:代码铸就的科技传奇,节日快乐

一、1024 程序员节的起源与发展 国际程序员节起源于俄罗斯,其设立的日期是每年的第 256 天,平年为 9 月 13 日,闰年为 9 月 12 日。256 这个数字对程序员来说意义非凡,1 个字节等于 8 位元,最多能表示 256 个数值&…

[LeetCode] 230. 二叉搜索树中第K小的元素

题目描述: 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 示例 1: 输入:root [3,1,4,null,2], k 1 输出:1示例 2&am…

河源市社保卡照片要求及手机自拍拿数码相片回执的方法

河源市的居民在申请或更新社保卡时,需要提交一张符合特定要求的照片。如果您需要更新或申请社保卡,本文将为您详细介绍河源市社保卡照片的规格要求,并指导您如何通过手机自拍获取符合标准的社保卡照片及回执。 根据河源市社保局的指南&#x…

jconsole或者jvisual连接服务器Java进程

java -Djava.rmi.server.hostname你的ip-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port一个新的端口,不能和项目端口一样-Dcom.sun.management.jmxremote.sslfalse -Dcom.sun.management.jmxremote.authenticatefalse -Dcom.sun.management.j…

深度解读:Spring.3版本自动装配机制的演变与实践

前言 今天,我们将开启对Spring-AI系列源码的讲解。请大家不急不躁,我会逐步深入,每次专注于一个知识点,以防让人感到困惑。 首先,源码的讨论自然离不开自动装配。有人可能会问,之前已经讲解过这个内容了&…

【CVPR 2025】1 论文模板中文版详细指南:从格式到提交要求

【CVPR 2025】1 论文模板中文版详细指南:从格式到提交要求 写在最前面1. 论文类型和使用的模板2. 摘要部分格式3. 论文正文格式要求4. 页边距和页码设置5. 标题与字体规范6. 数学公式和引用7. 脚注与参考文献8. 图表与颜色的使用9. 最终版本提交要求10. 补充材料的处…

一、Python基础语法(有C语言基础速成版)

在python中,变量是没有类型的,变量存储的数据是有类型的 可以把变量当做一个存放物品的盒子 一、字面量 字面量:在代码中,被写下来的 固定的值 python中常见的值的类型 二、注释 # 我是单行注释,一般要加个空格&a…

1024程序员日,让世界没有BUG!

近年来,电子商务、远程教育、智慧城市、智慧医疗等计算机互联网的新应用不断涌现且蓬勃发展。信息技术日益广泛地深入到社会生产、生活中各个领域。IT产业在数字化革命浪潮中,则以更高、更快、更强的速度向前发展着。这些都离不开程序员在背后默默付出。…

通过热成像技术在地球之外成长,在教室之外学习

“有了正确的心态,任何年龄的人都可以成为科学家” 。这是一位老师通过一项名为“Growing Beyond Earth”的研究项目教他六年级学生的内容,这让他们有机会测试不同植物在空间站上生长的可行性。借助科学方法和热成像相机等专业测量工具,这些学…

STM32实现毫秒级时间同步

提起“时间同步”这个概念,大家可能很陌生。一时间搞不清楚是什么意思。 我理解“时间同步”可以解决多个传感器采集数据不同时的问题,让多个传感器同时采集数据。 打个比方。两个人走路,都是100毫秒走一步(频率相同是前提&…

面试总结一

面试总结 1、自我介绍一下自己2.面试11、css常用布局有哪些2、css常用的属性3.js原型链4、开发中遇到的技术难点5、闭包6、ts了解什么呢7.git都用什么命令8、vue怎么打包9.vue启动一个项目需要什么10、vue怎么创建一个项目 2.面试21.vue2和vue3有什么区别2.复杂组件的封装&…

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【DSP指令加速篇】

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【DSP指令加速篇】 一、前文回顾二、CMSIS-NN简介2.1 为什么介绍CMSIS-NN?2.2 CMSIS-NN是什么?2.3 CMSIS-NN核心特性2.4 CMSIS-NN算子支持 三、TFLMCMSIS-NN集成3.1 包含TFLM的STM32项目3.2 理解TFLM…

vscode使用法则及神器介绍

目录 1.Vscode设置中文 2.文插件选择configure display Language 3.插件 4.代码格式化 5.创建代码模板 一个好的插件,可以快速提高优秀程序猿的工作效率,减少开发时间; 1.Vscode设置中文 首先打开VSCode软件 快捷键【CtrlShiftP】 2.…

基于neo4j的医疗图谱问答与展示

找不到好的毕业设计题材?或者对人工智能领域感兴趣却不知道如何下手?这里给大家推荐一款基于Neo4j的医疗图谱问答系统项目,绝对是毕业设计的不二选择。 这个项目依托于医疗领域的知识图谱,为用户提供交流问答系统。它不仅具有知识…

3DsMax删除FBX 导出的预设

3DsMax删除FBX 导出的预设 文档 https://help.autodesk.com/view/3DSMAX/2025/CHS/?guidGUID-9939F041-5E2D-4AA8-A732-6C2A1DFB5314删除静态FBX 这个预设 使用everything 搜索预设文件的后缀.fbxexportpreset ,然后 文件路径 C:\Users\GoodCooking\Documents\3…

GPU 与 GPU 服务器:科技璀璨之星,开启无限未来

今天咱们要来聊聊在科技领域中闪闪发光的 GPU 和 GPU 服务器。这可真是一对厉害的 “科技搭档”,正以其卓越的性能成为众多行业发展的强大动力源。 先来说说 GPU 吧。它呀,一开始是为了满足图形处理的高要求而诞生的。但随着科技不断进步,人…

WRF-LES与PALM微尺度气象大涡模拟

针对微尺度气象的复杂性,大涡模拟(LES)提供了一种无可比拟的解决方案。微尺度气象学涉及对小范围内的大气过程进行精确模拟,这些过程往往与天气模式、地形影响和人为因素如城市布局紧密相关。在这种规模上,传统的气象模…

百度搜索推广和信息流推广的区别,分别适用于什么场景!

信息流推广和搜索广告,不仅仅是百度,是很多平台的两个核心推广方式。 1、搜索广告: 就是基于用户的搜索习惯,更多是用户有疑问、还有用户当下就要做出行动的广告。 比如上门服务、线上咨询服务、招商加盟、了解产品各种型号和信…

Java应用程序的测试覆盖率之设计与实现(二)-- jacoco agent

说在前面的话 要想获得测试覆盖率报告,第一步要做的是,采集覆盖率数据,并输入到tcp。 而本文便是介绍一种java应用程序部署下的推荐方式。 作为一种通用方案,首先不想对应用程序有所侵入,其次运维和管理方便。 正好…

什么是机器人流量?如何识别和预防有害机器人流量?

机器人流量是指由自动软件程序(或机器人)而非人类用户生成的互联网流量。机器人可以执行各种任务,包括有益的和恶意的,而且速度比人类快得多。 据估计,大约 30% 的互联网流量来自旨在窃取内容、破坏服务和开展其他恶意…