Linux三剑客之Sed

news/2025/1/15 21:56:22/

目录

一、认识sed

二、使用sed

 命令格式

常用选项options

 地址定界

 编辑命令command

sed用法

常用选项:

地址界定演示

编辑命令command演示

sed高级编辑命令


一、认识sed

  sed 是一种流编辑器,它一次处理一内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’ 的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出或-i

  功能:主要用来自动编辑一个或多个文件, 简化对文件的反复操作

二、使用sed

 命令格式

sed` `[options] ``'[地址定界] command'` `file``(s)

常用选项options

  • -n:不输出模式空间内容到屏幕,即不自动打印,只打印匹配到的行

  • -e:多点编辑,对每行处理时,可以有多个Script

  • -f:把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个Script,换行写

  • -r:支持扩展的正则表达式

  • -i:直接将处理的结果写入文件

  • -i.bak:在将处理的结果写入文件之前备份一份

 地址定界

  • 不给地址:对全文进行处理

  • 单地址:

    • #: 指定的行

    • /pattern/:被此处模式所能够匹配到的每一行

  • 地址范围:

    • #,#

    • #,+#

    • /pat1/,/pat2/

    • #,/pat1/

  • ~:步进

    • sed -n '1~2p' 只打印奇数行 (1~2 从第1行,一次加2行)

    • sed -n '2~2p' 只打印偶数行

 编辑命令command

  • d:删除模式空间匹配的行,并立即启用下一轮循环

  • p:打印当前模式空间内容,追加到默认输出之后

  • a:在指定行后面追加文本,支持使用\n实现多行追加

  • i:在行前面插入文本,支持使用\n实现多行追加

  • c替换行为单行或多行文本,支持使用\n实现多行追加

  • w:保存模式匹配的行至指定文件

  • r:读取指定文件的文本至模式空间中匹配到的行后

  • =:为模式空间中的行打印行号

  • !:模式空间中匹配行取反处理

  • s///

    查找替换

    ,支持使用其它分隔符,如:

    s@@@

    s###

    • 加g表示行内全局替换;

    • 在替换时,可以加一下命令,实现大小写转换

    • \l:把下个字符转换成小写。

    • \L:把replacement字母转换成小写,直到\U或\E出现。

    • \u:把下个字符转换成大写。

    • \U:把replacement字母转换成大写,直到\L或\E出现。

    • \E:停止以\L或\U开始的大小写转换

sed用法

常用选项:

p:打印当前模式空间内容,追加到默认输出之后

 -n 不显示没匹配的行

 

 -e 多点编辑

 

 -i 直接对文件进行处理(.bak为备份文件)

 

地址界定演示

不指定行,打印全文

 替换第2行的b->B

 只打印所选中的内容

 打印1-2行的内容

 将奇数行的a或A替换为E

编辑命令command演示

[root@along ~]# cat demo
aaa
bbbb
AABBCCDD
[root@along ~]# sed "2d" demo  #删除第2行
aaa
AABBCCDD
[root@along ~]# sed -n "2p" demo  #打印第2行
bbbb
[root@along ~]# sed "2a123" demo  #在第2行后加123
aaa
bbbb
123
AABBCCDD
[root@along ~]# sed "1i123" demo  #在第1行前加123
123
aaa
bbbb
AABBCCDD
[root@along ~]# sed "3c123\n456" demo  #替换第3行内容
aaa
bbbb
123
456
[root@along ~]# sed -n "3w/root/demo3" demo  #保存第3行的内容到demo3文件中
[root@along ~]# cat demo3
AABBCCDD
[root@along ~]# sed "1r/root/demo3" demo  #读取demo3的内容到第1行后
aaa
AABBCCDD
bbbb
AABBCCDD
[root@along ~]# sed -n "=" demo  #=打印行号
1
2
3
[root@along ~]# sed -n '2!p' demo  #打印除了第2行的内容
aaa
AABBCCDD
[root@along ~]# sed 's@[a-z]@\u&@g' demo  #将全文的小写字母替换为大写字母
AAA
BBBB
AABBCCDD

sed高级编辑命令

格式

  • h:把模式空间中的内容覆盖至保持空间中

  • H:把模式空间中的内容追加至保持空间中

  • g:从保持空间取出数据覆盖至模式空间

  • G:从保持空间取出内容追加至模式空间

  • x:把模式空间中的内容与保持空间中的内容进行互换

  • n:读取匹配到的行的下一行覆盖 至模式空间

  • N:读取匹配到的行的下一行追加 至模式空间

  • d:删除模式空间中的行

  • D:删除 当前模式空间开端至\n 的内容(不再传 至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed


http://www.ppmy.cn/news/12873.html

相关文章

ConcurrentHashMap 的优化及其与HashTable, HashMap的区别

目录 1.优化一:减小锁粒度 2.优化二:只针对写操作加锁 3.优化三:CAS 4.优化四:扩容方式 HashMap是线程不安全的,HashTable是线程安全的,关键方法加锁了.我们更推荐的是ConcurrentHashMap ,更优化的线程安全哈希表 接下来我们总结一下ConcurrentHashMap 进行了哪些优化,比H…

应用层——Web和HTTP

目录 1. HTTP概况 1.1 Web页面简介 1.2 URL-统一资源定位器 1.3 HTTP协议 2. HTTP连接的两种类型 2.1 HTTP非持久性连接(Non-persistent HTTP) 2.2 HTTP持久性连接(Persistent HTTP) 2.2.1 无流水(pipelining)的持久性连接 2.2.2 带有流水机制的持久性连接 3. HT…

WebDAV之葫芦儿·派盘+BookxNote

BookxNote 支持WebDAV方式连接葫芦儿派盘。 BookxNote是全新设计的电子书阅读学习笔记软件,以不同的思维方式重塑我们的学习过程。一边阅读一边划重点,提供多种划重点笔记工具,包括直线、矩形、圆形、高亮文本,图片摘录。高亮的文本自动编辑为重点的批注内容,还可以对重点…

1月17日,30秒知全网,精选7个热点

///快手与央视达成合作,可通过直播、点播和短视频三种方式看春晚 据官方介绍,这已经是快手连续第五年与总台春晚进行深度合作。此外,今年快手也与17家省市电视台达成了区域春晚转播合作,为用户奉上春晚视听盛宴。 ///俄罗斯或单方…

商业智能 BI 赋能年底的财务分析

职场中总有些不能说的秘密,比如月底和年底的时候,千万不要去惹财务!尤其是年底,财务部门需要统计分析一整年的费用支出和经营收入,各种结算分析,还有新一年的预算,数据量庞大、业务系统分散、报…

Linux时钟配置

Linux系统时间不对可以通过以下三种方法修复1、将硬件时间同步到系统时间2、修改系统的时区3、配置NTP客户端系统时钟VS硬件时钟在Linux中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel…

我们是存算一体化

从最初的计算和存储分离,随着技术的发展,存算一体化越来越被大家重视,成为了下一个发展浪潮。其实对于海量数据场景来说,我们更认为数据应该是存算协同的关系。存算一体化才是最高效的技术之一,但是目前真正的存算一体,或者说革命性地突破冯•诺伊曼架构的存算一体还未实…

【Win11 + VSCode配置OpenCV C++一站式开发调试环境教程】

Win11 VSCode配置OpenCV C一站式开发调试环境教程1 下载1.1 版本介绍:1.2 对应三个软件的连接:2 环境配置3 编译1 下载 需要下载三个软件:OpenCV 、MInGW、CMake 1.1 版本介绍: 打开 OpenCV-MinGW-Build:OpenCV-4.…