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

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.xdnf.cn/news/19546.html

相关文章:

  • C++日志系统:高效异步日志实现解析
  • LeetCode 36. 有效的数独 - 解题思路与实现详解
  • ans.1中的对象标识符OBJECT_IDENTIFIER----OID
  • 【机器学习基础】决策树算法原理及其在无人驾驶技术中的应用
  • Matplotlib:让数据在Python中跳舞的魔法画笔![特殊字符]
  • 基于FPGA的正弦波和及滤波(已通过仿真和上板)
  • 如何确定虚拟机的IP
  • DVWA靶场通关笔记-SQL Injection (Impossible级别)
  • [ Android Audio 篇 ] 高通平台 Android AudioRecord 多通道录音
  • LangChain中Prompt处理机制的技术架构与核心思想分析
  • STL库——stack/queue(类函数学习)
  • 切片语法[::-1]及其可用的类型
  • 基于STM32设计的智能家居控制系统(华为云IOT)_275
  • 2023年IEEE IOTJ SCI1区TOP,动态环境下无人机目标覆盖任务路径规划,深度解析+性能实测
  • KingbaseES JDBC 驱动详解:连接、配置与最佳实践
  • 介绍Ansible和实施Ansible PlayBook
  • pinia状态管理工具
  • Redis核心原理与Java应用实践
  • 洞悉边界:软件测试中边界值分析的艺术与科学
  • OpenJDK 17 解释器分发表与安全点表机制解析
  • 零基础入门AutoSar中的ARXML文件
  • 【Flask】测试平台开发,产品管理功能UI重构-第九篇
  • Kubernetes 服务发现与健康检查详解
  • 搭建卷积神经网络
  • 软考 系统架构设计师系列知识点之杂项集萃(139)
  • C++11语言(三)
  • Nginx实现P2P视频通话
  • codecombat(Ubuntu环境详细docker部署教程)
  • 项目-云备份
  • 面试 八股文 经典题目 - HTTPS部分(一)