Sed命令的基本使用

sed介绍

粘贴一段wiki的介绍:

sed (stream editor) is a Unix utility that parses and transforms text, using a simple, compact programming language. sed was developed from 1973 to 1974 by Lee E. McMahon of Bell Labs, and is available today for most operating systems.

总的来说就是sed是unix类os下的文本操作工具,负责解析和转换文本

Linux常用的文本工具

文本处理的三驾马车

  • grep
  • sed
  • awk

sed: stream Editor

Features

  1. 行编辑器,逐行进行
  2. 分为模式空间和保留空间
  3. 逐行处理,支持模式匹配(regex)
  4. 默认不处理源文件,仅对模式空间中的进行处理
  5. 处理结束后将模式空间中的结果输出到屏幕

Usage

sed [option] 'AddressCommond' file

Address(需要处理的行)

  • StartLine,endLine

比如1,100,表示1-100行 特别注意的是,可以使用$:最后一行

  • /RegExp/(正则表达式)

比如: /^root/,表示以root开始的行

  • /pattern1/,/pattern2/

第一次被pattern1匹配到的行开始到被pattern2匹配到的行结束

  • LineNumber

指定某行

  • startLine, +N

从startLine开始向后的N行,总共是N+1行

Commonds

sed的命令很多,这里我只列出常用的commonds

  • d:删除符合条件的行
  • p:显示符合条件的行
  • a \string:在匹配的行后追加新行,内容是string
  • i \string:在匹配的行前追加新行,内容是string
  • r FILE:将指定的文件的内容添加到匹配的行之后
  • w FILE:将指定范围内的内容另存到指定的文件中
  • s /pattern/ReplaceString/修饰符:将符合模式的字符串替换为ReplaceString(默认只替换每行中第一次被模式匹配到的串)

可以使用三个相同的字符来代替’/’,上面的字符串替换等价于s #pattern#ReplaceString#修饰符 特别的可以使用&:表示整个模式匹配到的字符串

修饰符:

  1. g:全局替换
  2. i:匹配时忽略大小写

Options

  • -n:静默模式,不显示模式空间中的内容
  • -r:使用扩展的正则表达式
  • -i:直接修改源文件(危险慎重使用)
  • -e 处理 -e 处理:连续进行sed的处理
  • -f:指定处理脚本

另外可以使用类似sed -f SCRIPTFILE file (将SCRIPTFILE中的每个命令作用在file上)

Examples

  1. sed ‘1,2d’ /etc/fstab (删除/etc/fstab的第一和第二行)
  2. sed -n ‘/^\//p’ /etc/fstab (显示/etc/fstab中以/开头的行)
  3. sed ‘/^\//a #hello world\n#hello,linux’ /etc/fstab (在/etc/fstab中以/开头的行后一行追加”#hello world\n#hello,linux”) (其中\n会换行)
  4. sed ‘2r /etc/issue’ /etc/fstab (在/etc/fstab中的第二行之后追加/etc/issue文件中的内容)
  5. sed ‘/oot/w /tmp/oot.txt’ /etc/fstab (将/etc/fstab文件中的包含oot的行的内容另存到/tmp/oot.txt)
  6. sed ‘s#1..e#&r#g’ sed.txt (将sed.txt中的符合l..e模式的字符串全部在后面加上”r”)
  7. sed ‘s#(1..e)#\1r#g’ sed.txt (将sed.txt中的符合l..e模式的字符串全部在后面加上”r”)
  8. sed ‘s#l(..e)#L\1#g’ sed.txt (将sed.txt中的符合l..e模式的字符串的小写的”l”换成大写的”L”)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

Linux进阶命令和Shell编程

1.高级文本命令——sed1.1sed简介 sed全称是:Stream EDitor,即流编辑器,是一个很好的文本处理工具,本身是一个管道命令,处理时,把当前处...

1938
来自专栏Linux Python 加油站

Linux学习----文本三剑客——sed(马哥教育原创)

我以前的文章介绍过grep了,今天我就来说一下第二个sed,它是stream editor的缩写。在Linux的文本文件中文本存储都是一行,显示时表现的多行其实...

1313
来自专栏李蔚蓬的专栏

关于try...except和try ....except...else

我们写程序的时候,有时会出现一些错误或异常,导致程序终止。例如,做除法时,除数为0,会引起一个ZeroDivisionErro:

715
来自专栏猿人谷

grep命令

Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expre...

1697
来自专栏吴伟祥

Shell脚本学习总结(一) 原

临时变量:是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见

662
来自专栏小樱的经验随笔

【批处理学习笔记】第七课:简单的批处理命令(6)

set 命令   set     设置环境变量 [适用场合]  设置声卡和路径等时用到 [用  法]  set [环境变量]=[字符串]        ...

3025
来自专栏技术博文

linux awk命令详解

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以...

33210
来自专栏北京马哥教育

grep、egrep、fgrep命令和正则表达式用法

一、简介 1.1、grep说明 grep命令简单来说就是linux系统实现文本内容筛选过滤的命令。当我们需要快速定位查找文本(通常是配置文件)中我们...

3136
来自专栏C/C++基础

Linux命令(36)——awk命令

AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输...

952
来自专栏Python小屋

Python编程常见出错信息及原因分析(1)

1.被0除错误 演示代码: >>> 2 / 0 Traceback (most recent call last): File "<pyshell#0>",...

2796

扫码关注云+社区