shell脚本四剑客--sed的应用
sed的介绍
sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑
sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过
需要注意,sed 所做的修改并不会直接改变文件的内容(如果是用管道符接收的命令的输出,则连文件都没有),而是把修改结果只显示到屏幕上,除非使用"-i"选项才会直接修改文件。
大多数小伙伴之所以觉得难,是因为sed 拥有的参数太多,实际上,我们只要学会以下参数就可以。
sed的参数导图
常用选项:
-n:使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。-e:直接在指令列模式上进行 sed 的动作编辑;-f:直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;-r:sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)-i:直接修改读取的档案内容,而不是由萤幕输出。
常用命令:
a:新增, a 的后面可以接字串,而这些字串会在新的一行出现;
c:取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行;
d:删除,因为是删除,所以 d 后面通常不接任何字符;
i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p:列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作;
s:取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g!
g:是行内进行全局替换
sed工具实例
2.1 替换test.txt文本中old为new:
sed 's/old/new/g' test.txt
2.2 打印test.txt文本第一行至第三行:
sed -n '1,3p' test.txt
2.3 打印test.txt文本中首行和尾行:
sed -n '1p;$p' test.txt
2.4 删除test.txt第一行至第三行;删除匹配行至最后一行:
sed '1,3d' test.txt
sed '/测试/,$d' test.txt
2.5 删除test.txt最后6行;删除最后一行:
for i in `seq 1 6`;do sed -i '$d' test.txt;done;
sed '$d' test.txt
2.6 在test.txt查找测试所在行,并在其下一行添加word字符,a表示在其下一行添加字符串:
sed '/测试/aword' test.txt
2.7 在test.txt查找测试所在行,并在其上一行添加word字符,i 表示在其上一行添加字符串:
sed '/测试/iword' test.txt
2.8 在test.txt查找以测试结尾的行尾添加字符串word,$表示结尾标识,&在Sed中表示添加:
sed 's/测试$/&word/g' test.txt
2.9 在test.txt查找测试的行,在其行首添加字符串word,^表示起始标识,&在Sed中表示添加:
sed '/测试/s/^/&word/' test.txt
2.10 多个sed命令组合,使用-e参数:在含测试字符的行首加1.并在结尾是检测字符处加.
sed -e '/测试/s/^/&1./' -e 's/检测$/&./g' test.txt
2.11 多个sed命令组合,使用分号“;”分割:
sed -e '/测试/s/^/&1./;s/检测$/&./g' test.txt
2.12 Sed读取系统变量,变量替换:
WEBSITE=www.test.net
sed "s/测试/$WEBSITE/g" test.txt
2.13 修改Selinux策略enforcing为disabled:
sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
sed -i '/SELINUX/!s/enforcing/disabled/g' /etc/selinux/config
查找/SELINUX/行,然后将其行enforcing值改成disabled、!s表示不包括SELINUX行
2.14 打印文件的行号
[root@itlaoxin41 ~]# sed -n '$=' /etc/passwd
44
总结
带的学员越多,越发现sed最难的地方不是知识本身,而是畏难情绪,总觉得一个命令弄这么多参数,这可怎么学啊。
实际上每个参数多练一练,还是很容易学会的。
shell脚本四剑客--sed的应用相关推荐
- shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)
一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...
- Shell编程四剑客之AWK(基础篇)
Shell 编程四剑客之 AWK 概述 其语法参数格式为,AWK 常用参数.变量.函数详解如下: (1) AWK 基本语法参数详解: (2) AWK 内置变量详解: (3) AWK 内置函数详解: ( ...
- Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)
shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...
- shell脚本——文本编辑器sed(详细讲解)
每日分享: 再长的路,一步步也能走完:再短的路,不迈开双腿也无法到达. 文章目录 一.定义 二.工作流程 三.基本用法 1.格式 2.常用选项 3.常用操作 四.sed命令使用--打印内容 1.只打印 ...
- 在shell脚本中使用sed命令更改文件中两个相似参数的其中一个
文件中含有两段数据,第一段是mysql1的配置,第二段是mysql2的配置. [root@ip-10-40-18-118 szh]# cat test.txt mysql1:host: 1.1.1.1 ...
- shell脚本中使用sed替换路径字符串
示例场景如下: shell中获取某一bin的路径(如ctags),并将其写入到某一配置文件(如.vimrc)中. 首先 ctags_bin=`which ctags` 获取bin的路径,然后插入到配置 ...
- 四、shell编程四剑客
sed的使用 使用vim在打开的文件中替换内容 :%s/168/134/g #把文件中的所有168替换为134 在文件外部替换文件中的内容 sed -i 's/192.168/192.134/g' l ...
- shell编程四剑客之awk
1.awk简介 awk是一个优良的文本处理工具,Linux及UNIX环境中现有的功能最强大的数据处理引擎之一,以Aho.Weinberger.Kernighan三位发明者名字首字母命名为awk,awk ...
- SHELL脚本编程:sed高级应用和awk基本用法(SHELL----DAY31)
回顾 正则表达式 基本正则 ^ $ [] [^] . * {n,m} {n} {n,} () 扩展正则 + ? {n,m} ( ) | \b sed 前置命令 | sed 选项 (定址符)指令 sed ...
最新文章
- win 8升级win8.1的几个问题
- Android studio | From Zero To One ——XML文件中的单行注释与多行注释
- opengl游戏引擎源码_跨平台渲染引擎之路:拨云见日
- 给刚开始学习Linux的小白们的福利——资源已经分享,可随时下载
- maven 部署nexus_Maven部署到Nexus
- Linux日志系统小记
- 机器学习-贝叶斯网络
- B站获得英雄联盟赛事直播三年独播版权
- DC漫画公司正在考虑进军NFT市场
- OOP之C#设计及其UML(反向工程)
- TwinCAT 3 系统程序
- 程序员如何编写高大上且实用的技术文档
- php如何实现mac端重签ipa,越狱插件:实现自动重签,让你不再掉签的越狱插件ReProvision...
- Debian10安装教程
- 本地计算机无法启动wireless,win7系统使用无线时提示:“windows无法启动wireless”的解决办法...
- 使用Saiku+Kylin构建多维分析OLAP平台
- BZOJ1499: [NOI2005]瑰丽华尔兹
- 双十一狂欢之后,来看程序员粉丝的真情告白
- Waymo在自动驾驶领域优势明显,但并非无懈可击
- CSS:CSS层叠样式表的概述
热门文章
- 使用vue3+element-plus+particles实现炫酷(粒子背景)登陆界面
- java里的nextint_「nextint」Java中关于nextInt()、next()和nextLine()的区别 - 金橙教程网...
- 工具----8、Xray漏洞扫描器
- 【C语言】用一个数组实现两个堆栈
- 刷爆力扣之检查数组对是否可以被 k 整除
- Handlebars 安装
- MySQL8.0修改root密码
- 推荐的ADM平台整机
- 你知道爬行脑是什么脑吗?
- pgm转换bmp c语言,PGM格式显示转换代码!_NONO