【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 教程 » 正文

sed -i命令详解及入门攻略

放大字体  缩小字体 发布日期:2020-10-06 15:47:41    浏览次数:8
导读

  sed 是一个比较古老的功能十分强大的用于文本处理的流编辑器加上正则表达式的支持可以进行大量的复杂的文本编辑操作。sed 本身是一个非常复杂的工具有专门的书籍讲解 sed 的具体用法但是个人觉得没有必要去学习它的每个细节那样没有特别大的实际意义。网上也有很多关于 sed 的教程我也是抱着学习的心态来学习 sed 的常

  sed 是一个比较古老的功能十分强大的用于文本处理的流编辑器加上正则表达式的支持可以进行大量的复杂的文本编辑操作。sed 本身是一个非常复杂的工具有专门的书籍讲解 sed 的具体用法但是个人觉得没有必要去学习它的每个细节那样没有特别大的实际意义。网上也有很多关于 sed 的教程我也是抱着学习的心态来学习 sed 的常见的用法并进行系统的总结内容基本覆盖了 sed 的大部分的知识点。文中的内容比较简练加以实际示例来帮助去理解 sed 的使用。

  sed 全名为 stream editor流编辑器用程序的方式来编辑文本功能相当的强大。是贝尔实验室的 Lee E.McMahon 在 1973 年到 1974 年之间开发完成目前可以在大多数操作系统中使用sed 的出现作为 grep 的继任者。与vim等编辑器不同sed 是一种非交互式编辑器(即用户不必参与编辑过程)它使用预先设定好的编辑指令对输入的文本进行编辑完成之后再输出编辑结构。sed 基本上就是在玩正则模式匹配所以玩sed的人正则表达式一般都比较强。

  sed会一次处理一行内容。处理时把当前处理的行存储在临时缓冲区中成为模式空间接着用sed命令处理缓冲区中的内容处理完成后把缓冲区的内容送往屏幕。接着处理下一行这样不断重复直到文件末尾。文件内容并没有改变除非你使用重定向存储输出。

  在编写处理字符串的程序或网页时经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具换句线c;正则表达式就是记录文本规则的代码。许多程序设计语言都支持利用正则表达式进行字符串操作。在很多文本编辑器里正则表达式通常被用来检索、替换那些符合某个模式的文本。

  关于正则表达式的内容挺多的掌握好下文中提及的内容就能满足正常工作中的需要如果是专门做正则编程的可以去买本正则表达式的书籍来看好了^_^。只有多动手多练习才是学开发编程的最好姿势。

  ^表示行首的意思也就是每一行的开始位置。在这里并不是上边字符范围中取反的意思^符号只有在[]符号的开头处才能表示字符取反。

  扩展正则表达式是在基本正则表达式中扩展出来的内容不是很多使用频率上可能没有基本正则表达式那么高但是扩展正则依然很重要很多情况下没有扩展正则是搞不定的。sed命令使用扩展正则需要加上选项-r。

  这里的{}和基本正则表达式中的大括号意义是一样的只不过在使用时不用加\转义符号。

  sed默认会把输入行读取到模式空间简单理解就是一个内存缓冲区sed子命令处理的内容是模式空间中的内容而非直接处理文件内容。因此在sed修改模式空间内容之后并非直接写入修改输入文件而是打印输出到标准输出。如果需要修改输入文件那么就可以指定-i选项。

  默认情况下sed会对每一行内容进行匹配、处理、输出某些情况不需要对处理的文本全部编辑只需要其中的一部分比如1-10行偶数行或者是包含hello字符串的行这种情况下就需要我们去定位特定的行来处理而不是全部内容这里把这个定位指定的行叫做定址。

  模式空间初始化为空处理完一行后会自动输出到屏幕并清除模式空间保持空间初始化为一个空行也就是默认带一个\n处理完后不会自动清除。模式空间和保持空间从程序的角度去看其实就是sed在工作的时候占用了一些内存空间和地址sed工作完毕就会把内存释放并归还给操作系统。

  大概简单描述一下sed的工作流程读取文件的一行存入模式空间然后进行所有子命令的处理处理完后默认会将模式空间的内容输出打印到标准输出也就是在屏幕上显示出来接着清空模式空间的内存继续读取下一行的内容到模式空间继续处理依次循环处理。

  N追加下一行到模式空间再把当前行和下一行同时应用后面的命令。

  P输出多行模式空间的第一部分直到第一个嵌入的换行符位置。在执行完脚本的最后一个命令之后模式空间的内容自动输出。P命令经常出现在N命令之后和D命令之前。

  D删除模式空间中第一个换行符的内容。它不会导致读入新的输入行相反它返回到脚本的顶端将这些指令应用与模式空间剩余的内容。这3个命令能建立一个输入、输出循环用来维护两行模式空间但是一次只输出一行。

  (StreamEDitor),流式编辑器 非交互式,基于模式匹配过滤及修改文本//类比:Vim是一个交互的编辑器 逐行处理,并将结果输出到屏幕 可实现对文本的输出、删除、替换、复制、剪切、导入、导出等各种操作 语法格式: 格式1:前置

  是一款流编辑工具,用来对文本进行过滤与替换操作,特别是当你想要对几十个配置文件做统一修改时,你会感受到

  默认并不直接修改源文件,而是将读入的内容复制到缓冲区中,我们称之为模式空间(pattern space),所有的指...

  是一个流编辑器。流编辑器用于对输入流(文件或来自管道的输入)执行基本文本转换。虽然在某些方面类似于允许脚本编辑(例如ed)的编辑器,但

  能够在管道中过滤文本,这特别区别于其他类型的编辑器。 2概述 例如,要替换所有出现的你好 至 世界在文件中 input.txt中:

  是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。本文主要介绍

  s/SYNC_HWCLOCK=no/SYNC_HWCLOCK=yes/g /etc/sysconfig/ntpdate

  的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过

  批量替换字符串 一月 21, 2014 (NO COMMENTS) Linux下批量替换多个文件中的字符串的简单方法。用

  s/原字符串/新字符串/g `grep 原字符串 -rl 所在目录` 例如:我要把 charset=gb2312 替换为 charset=UTF-8,执行命

  个人网站域名 欢迎光临) Github域名 热衷分享 , 欢乐大家

 
关键词: sed命令
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:https://www.31duo.com/news/show-613582.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4