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的应用相关推荐

  1. shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)

    一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...

  2. Shell编程四剑客之AWK(基础篇)

    Shell 编程四剑客之 AWK 概述 其语法参数格式为,AWK 常用参数.变量.函数详解如下: (1) AWK 基本语法参数详解: (2) AWK 内置变量详解: (3) AWK 内置函数详解: ( ...

  3. Linux高级专题详解--shell编程大全(shell变量,if语句,case语句,for循环,while循环,函数调用,数组,正则表达式,shell脚本三剑客--grep,sed,awk家族)

    shell编程 初始shell 程序 语言 编程 ---------------------------------- 语言 自然语言:汉语.英语 计算机语言:c语言.c++.(java php py ...

  4. shell脚本——文本编辑器sed(详细讲解)

    每日分享: 再长的路,一步步也能走完:再短的路,不迈开双腿也无法到达. 文章目录 一.定义 二.工作流程 三.基本用法 1.格式 2.常用选项 3.常用操作 四.sed命令使用--打印内容 1.只打印 ...

  5. 在shell脚本中使用sed命令更改文件中两个相似参数的其中一个

    文件中含有两段数据,第一段是mysql1的配置,第二段是mysql2的配置. [root@ip-10-40-18-118 szh]# cat test.txt mysql1:host: 1.1.1.1 ...

  6. shell脚本中使用sed替换路径字符串

    示例场景如下: shell中获取某一bin的路径(如ctags),并将其写入到某一配置文件(如.vimrc)中. 首先 ctags_bin=`which ctags` 获取bin的路径,然后插入到配置 ...

  7. 四、shell编程四剑客

    sed的使用 使用vim在打开的文件中替换内容 :%s/168/134/g #把文件中的所有168替换为134 在文件外部替换文件中的内容 sed -i 's/192.168/192.134/g' l ...

  8. shell编程四剑客之awk

    1.awk简介 awk是一个优良的文本处理工具,Linux及UNIX环境中现有的功能最强大的数据处理引擎之一,以Aho.Weinberger.Kernighan三位发明者名字首字母命名为awk,awk ...

  9. SHELL脚本编程:sed高级应用和awk基本用法(SHELL----DAY31)

    回顾 正则表达式 基本正则 ^ $ [] [^] . * {n,m} {n} {n,} () 扩展正则 + ? {n,m} ( ) | \b sed 前置命令 | sed 选项 (定址符)指令 sed ...

最新文章

  1. win 8升级win8.1的几个问题
  2. Android studio | From Zero To One ——XML文件中的单行注释与多行注释
  3. opengl游戏引擎源码_跨平台渲染引擎之路:拨云见日
  4. 给刚开始学习Linux的小白们的福利——资源已经分享,可随时下载
  5. maven 部署nexus_Maven部署到Nexus
  6. Linux日志系统小记
  7. 机器学习-贝叶斯网络
  8. B站获得英雄联盟赛事直播三年独播版权
  9. DC漫画公司正在考虑进军NFT市场
  10. OOP之C#设计及其UML(反向工程)
  11. TwinCAT 3 系统程序
  12. 程序员如何编写高大上且实用的技术文档
  13. php如何实现mac端重签ipa,越狱插件:实现自动重签,让你不再掉签的越狱插件ReProvision...
  14. Debian10安装教程
  15. 本地计算机无法启动wireless,win7系统使用无线时提示:“windows无法启动wireless”的解决办法...
  16. 使用Saiku+Kylin构建多维分析OLAP平台
  17. BZOJ1499: [NOI2005]瑰丽华尔兹
  18. 双十一狂欢之后,来看程序员粉丝的真情告白
  19. Waymo在自动驾驶领域优势明显,但并非无懈可击
  20. CSS:CSS层叠样式表的概述

热门文章

  1. 使用vue3+element-plus+particles实现炫酷(粒子背景)登陆界面
  2. java里的nextint_「nextint」Java中关于nextInt()、next()和nextLine()的区别 - 金橙教程网...
  3. 工具----8、Xray漏洞扫描器
  4. 【C语言】用一个数组实现两个堆栈
  5. 刷爆力扣之检查数组对是否可以被 k 整除
  6. Handlebars 安装
  7. MySQL8.0修改root密码
  8. 推荐的ADM平台整机
  9. 你知道爬行脑是什么脑吗?
  10. pgm转换bmp c语言,PGM格式显示转换代码!_NONO