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

shell脚本第六阶段---三剑客之sed

一、sed介绍

掌握sed的基本语法结构

熟悉sed常用的命令,如打印p,删除d,插入i等

1.sed的工作流程

文本文件--------------->sed的模式空间(缓冲区)---------------------->sed输出到屏幕

首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。

sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。

sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

2.sed使用方法

sed常见的语法格式有两种,一种叫命令行模式,另一种叫脚本模式。

2.1命令行格式

格式

sed [option] 'sed的命令|地址定位' filename
说明:引用shell script中的变量应使用双引号,而非通常使用的单引号option:
-e  进行多项编辑,即对输入行应用多条sed命令时使用
-n  取消默认的输出
-f  指定sed脚本的文件名
-r  使用扩展正则表达式
-i  inplace,原地编辑(修改源文件)常用命令和选项
p 打印行
d 删除行
sed -n 'p' a.txt
sed -n '1p' a.txt
sed -n '2p' a.txt
sed -n '1,5p' a.txt
sed -n '5,10p' a.txti\ 在当前行之前插入文本。多行时除最后一行外,每行末尾需用"\"续行  vim
a\ 在当前行后添加一行或多行。多行时除最后一行外,每行末尾需用“\”续行
c\ 用此符号后的新文本替换当前行中的文本。多行时除最后一行外,每行末尾用"\"续行  整行替换sed 'ihello' a.txt
sed '1ihello' a.txt
sed '1ihello\nworld' a.txt
sed '1iheloo\
> world\
> 9999323' 2.txt
sed '2chello world' a.txt
sed '/root/chello world' a.txt
sed '/[a-z]/chello world' 2.txt=============================
命令2(rw!):
r  从文件中读取输入行
w  将所选的行写入文件sed -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/w b.txt' 2.txt============================
!  对所选行以外的所有行应用命令,放到行数之后
sed -n '1!p' 1.txt
sed -n '4p' 1.txt
sed -n '4!p' 1.txt
============================
命令3(sg):
s 用一个字符串替换另一个
g 在行内进行全局替换sed -n 's/root/ROOT/p' a.txt
sed -n 's/root/ROOT/gp' a.txt
sed -n 's/^#//gp' a.txt
===========================
命令4(=&i)& 保存查找串以便在替换中引用  \(\)
sed -n 'root/p' a.txt
sed -n 's/root/#&/p' a.txt= 打印行号
sed -n '/bash$/=' passwd   打印以bash结尾的行的行号
sed -ne '/bash$/=' -ne '/bash$/p' a.txti  直接原地修改源文件
sed -i 's/root/ROOT/g' a.txt其他命令讲解
y命令
该命令与UNIX/Linux中的tr命令类似,字符按照一对一的方式从左到右进行转换
正则表达式元字符对y命令不起作用。与s命令的分隔符一样,斜线可以被替换成其他的字符
sed '39,41y/stu/STU/' /etc/passwd
sed '39,41y/stu:x/STU@%/' /etc/passwdq 退出
sed '5q' 1.txt
sed '/mail/q' 1.txt
sed -r '/^yunwei|^mail/q' 1.txt

3.Sed工具结合正则表达式使用总结

1.如果匹配的是扩展正则表达式,需要使用-r来扩展sed
grep -E
sed -r
+ ? () {n,m} | \d注意:
在正则表达式中如果出现特殊字符(^$.*/[]),需要"\"号做转义
eg:sed '/\$foo/p' file3.逗号分隔符
例如:sed '5,7d' file   删除5-7行3.组合方式
sed '/foo/,+4d' file 删除从匹配字符"foo"开始到其后四行为止的行
sed '/foo/,~3d' file 删除从匹配字符"foo"开始删除到3的倍数行(文件中)

http://www.dtcms.com/a/360084.html

相关文章:

  • Spring Cloud Alibaba Seata 分布式事务(六)
  • CPTS---Hospital
  • AliceVision相比于OpenMVG、Colmap有什么区别和特点
  • 计算机毕设选题:基于Python+Django实现电商评论情感分析系统
  • 嵌入式ARM程序高级调试技能:20.qemu arm ARM Linux 上 addr2line 的实际应用示例
  • 常用定位技术对比解析
  • OpenCL C 命令队列
  • 点接触混合润滑完整数值解
  • Photoshop - Ps 标尺
  • PortSwigger靶场之DOM XSS in document.write sink using source location.search通关秘籍
  • [ Android Audio 篇 ] 高通平台 Android AudioRecord 多通道录音
  • 手写call函数【JavaScript】
  • Java多线程基础:进程、线程与线程安全实战
  • 《信息学奥林匹克辞典》中的一个谬误
  • 【Android】Notification 的基本使用
  • C++ 快速复习指南(上半部分)
  • 房屋租赁系统|基于SpringBoot和Vue的房屋租赁系统(源码+数据库+文档)
  • 8.31【Q】CXL-DMSim:
  • 数学分析原理答案——第七章 习题12
  • 设置Ubuntu 22.04 LTS上的rsync同步服务
  • Hysplit大气传输和污染扩散-轨迹聚合标准20%30%用途
  • 国内大型银行数据模型实践案例
  • PerfectSquares.java
  • 解决COB支架偏移载具分析问题根源
  • 编译器领域 名人堂
  • 单表查询-group by rollup优化
  • ibping基本使用 以及 包丢失 超时 排障
  • 【GPT入门】第62课 情感对话场景模型选型、训练与评测方法,整体架构设计
  • Redis核心原理与Java应用实践
  • 基于Seurat的空转单样本数据分析流程学习(一)