当前位置: 首页 > news >正文

第七节 流编辑器sed(stream editor)(7.2)

三,模式空间中的编辑操作

3,1,地址定界
地址定界示例说明
不写地址定界表示对文件所有行进行处理
num1,num21,3或者1,$对文件的1-3行进行处理或者1-$(表示文件的最后一行)
num1,+N1,+3对文件的num1行和之后n行进行处理
first~step1~2对文件的1,3,5,7,…的行内容进行处理
/pattern//^root/,/r/l对任何能够被正则表达式匹配的行进行处理
%pattern%%/r%可以使用其他的边界符号(例如#),对任何能够被正则表达式匹配的行处理
/pattern1/,/pattern2//^root/,/^adm/表示正则表达式1和正则表达式2匹配的行和中间的所有行
0,/pattern1/或者1,/pattern1/0,/^adm/从第一行开始到能够被正则表达式匹配的行

示例:

生成测试文件

head -n 5 /etc/passed > testfile

a)替换文件中所有:为@@@

sed 's/:/@@@/g' testfile
root@@@x@@@0@@@0@@@root@@@/root@@@/bin/bash
bin@@@x@@@1@@@1@@@bin@@@/bin@@@/sbin/nologin
daemon@@@x@@@2@@@2@@@daemon@@@/sbin@@@/sbin/nologin
adm@@@x@@@3@@@4@@@adm@@@/var/adm@@@/sbin/nologin
lp@@@x@@@4@@@7@@@lp@@@/var/spool/lpd@@@/sbin/nologin

b)替换1-3行

sed '1,3s/:/@@@/g' testfile
root@@@x@@@0@@@0@@@root@@@/root@@@/bin/bash
bin@@@x@@@1@@@1@@@bin@@@/bin@@@/sbin/nologin
daemon@@@x@@@2@@@2@@@daemon@@@/sbin@@@/sbin/nologin
adm: X: 3:4: adm:/var/adm: sbin/nologin/
lp: x: 4:7: lp:/var/spool/lpd:/sbin/nologin

c)替换1行和3行的":"

sed -e '1s/:/@@@/g' -e '3s/:/@/g' testfile
root@@@x@@@0@@@0@@@root@@@/root@@@/bin/bash
bin: x: 1:1: bin:/bin:/sbin/nologin
daemon@x@2@2@daemon@/sbin@/sbinnologin
admx: 3:4: adm:/var/adm:/sbin/nologin
lp: x: 4:7: lp:/var/spool/lpd:/sbin/nologin

d)替换2行和之后两行":"

sed -e '2,+2s/:/@@@/g' -e '3s/:/@/g' testfile
root: x: 0:0: root:/root:/bin/bash
bin@@@x@@@1@@@1@@@bin@@@/bin@@@/sbin/nologin
daemon@@@x@@@2@@@2@@@daemon@@@/sbin@@@sbin/nologin
adm@@@x@@@3@@@4@@@adm@@@/var/adm@@@/sbin/nologin
lp: x: 4:7: lp:/var/spool/lpd:/sbin/nologin

e)每隔1行替换

sed -e '2~3s/:/@@@/g' testfile
root: x: 0:0: root:/root:/bin/bash
bin@@@x@@@1@@@1@@@bin@@@/bin@@@/sbin/nologin
daemon: x: 2:2: daemon:/sbin:/sbin/nologin
adm@@@x@@@3@@@4@@@adm@@@/var/adm@@@/sbin/nologin
lp: x: 4:7: lp:/var/spool/lpd:/sbin/nologin

f)带sbin字符忽略大小写的行替换

sed -e '/SBIN/IS/:/@@@/g' testfile
root: x: 0:0: root:/root:/bin/bash
bin@@@x@@@1@@@1@@@bin@@@/bin@@@/sbin/nologin
daemon@@@x@@@2@@@2@@@daemon@@@/sbin@@@/sbin/nologin
adm@@@x@@@3@@@3@@@4@@@adm@@@/var/adm@@@/sbin/nologin
lp@@@x@@@4@@@7@@@lp@@@/var/spool/lpd@@@/sbin/nologin

g)daemon和lp字符之间的行替换

sed -e '/daemon/,/lp/s/:/@@@/g' testfile
root: x: 0:0: root:/root:/bin/bash
bin: x: 1:1: bin:/sbin/nologin
daemon@@@x@@@2@@@daemon@@@/sbin@@@/sbin@@@/sbin/nologin
adm@@@x@@@3@@@4@@@7@@@lp@@@/var/spool/lpd@@@/sbin/nologin
lp@@@x@@@4@@@7@@@lp@@@/var/spool.lpd@@@/sbin/nologin

h)第一行到adm之间的

sed -e '1, adm/s/:/@@@/g' testfile
root@@@x@@@0@@@0@@@root@@@/root@@@/root@@@/bin/bash
bin@@@x@@@1@@@1@@@bin@@@/bin@@@/sbin/nologin
daemon@@@x@@@2@@@2@@@daemon@@@/sbin@@@/sbin/nologin
adm@@@x@@@3@@@4@@@adm@@@/var/adm@@@/sbin/nologin

i)adm到最后一行

sed -e '/asm/,$?S/:/@@@/g' testfile
root: x: x0:0: root:/root:/bin/bash
bin: x: 1:1: bin:/bin:/sbin/nologin
daemon: x: 2:2: daemon:/sbin:/sbin/no1ogin 
adm@@@x@@@3@@@4@@@adm@@@/var/adm@@@/sbin/no1ogin 
lp@@@x@@@4@@@7@@@lp@@@/var/spool/lpd@@@/sbin/nologin

j)其他sed分隔符的指定

sed -e '\%adm%,$s%:%@@@%/g' testfile
sed -e '\#adm#,$s#:#@@@#g' testfile

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 三十六、【人工智能】【机器学习】【监督学习】- Bagging算法模型
  • 解决NLP任务的Transformer为什么可以应用于计算机视觉?
  • 16. 数值的整数次方
  • 论文分享|MLLMs中多种模态(图像/视频/音频/语音)的tokenizer梳理
  • 【Java-一些常见键值对集合面试问题】
  • 学习笔记 韩顺平 零基础30天学会Java(2024.8.8)
  • 2024华为数通HCIP-datacom最新题库(H12-831变题更新⑨)
  • 【计算机网络】LVS四层负载均衡器
  • Leetcode JAVA刷刷站(27)移除元素
  • 【C++】函数的声明
  • 计算机毕业设计 助农产品采购平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 模型部署 - docker
  • 动态规划问题
  • 当前IT行业10大热门细分技术方向,哪一个更适合你?
  • 基于llama.cpp实现Llama3模型的guff格式转换、4bit量化以及GPU推理加速(海光DCU)
  • 【面试系列】之二:关于js原型
  • E-HPC支持多队列管理和自动伸缩
  • es6(二):字符串的扩展
  • input的行数自动增减
  • Java精华积累:初学者都应该搞懂的问题
  • Linux后台研发超实用命令总结
  • nodejs调试方法
  • PHP 的 SAPI 是个什么东西
  • Python爬虫--- 1.3 BS4库的解析器
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 包装类对象
  • 大数据与云计算学习:数据分析(二)
  • 给初学者:JavaScript 中数组操作注意点
  • 基于游标的分页接口实现
  • 说说动画卡顿的解决方案
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 原生JS动态加载JS、CSS文件及代码脚本
  • Java性能优化之JVM GC(垃圾回收机制)
  • 组复制官方翻译九、Group Replication Technical Details
  • ​VRRP 虚拟路由冗余协议(华为)
  • #pragma once
  • #pragma once与条件编译
  • #Spring-boot高级
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • (02)Hive SQL编译成MapReduce任务的过程
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (LeetCode C++)盛最多水的容器
  • (pojstep1.3.1)1017(构造法模拟)
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (数据结构)顺序表的定义
  • (算法二)滑动窗口
  • (一)u-boot-nand.bin的下载
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (转)创业家杂志:UCWEB天使第一步
  • ***监测系统的构建(chkrootkit )
  • .Net 8.0 新的变化