sed命令——流编辑器

日期: 2015年09月15日

Sed命令:Stream Editor (流编辑器/行编辑器)

读取文件时把文件所有内容加载至内核缓冲区中,一次只处理一行数据。

工作机制:

sed命令默认并不是直接编辑磁盘上文件本身的内容,而是由内核把文件加载至内存中(缓冲区),sed命令

自身在内部维护着一个内核存储空间,称为"模式空间"(pattern space)它会从内核缓冲区中一次加载

一行内容进来,在此空间内完成编辑,并把编辑的结果输出到屏幕上。

语法:

sed [OPTION]... {script} [input-file]...

sed [options] ‘addr1[,addr2]编辑命令‘ FILE...

sed [options] "addr1[,addr2]编辑命令" FILE...

选项:

-n  静默模式,不输出模式空间中的内容

-r: 支持扩展正则表达式;

-e ‘script1‘ -e ‘script2‘ -e ‘script3‘:指定多脚本运行;

-f /path/to/script_file:从指定的文件中读取脚本并运行;

-i: 直接修改源文件;

编辑命令:

d  删除

p  打印

\n  换行

i \char  在被模式匹配到的行的前一行插入内容

a \char  在被模式匹配到的行的后一行插入内容

r /PATH/TO/FILE  在指定位置把另外一个文件的内容插入进来

w /PATH/TO/FILE  将符合条件的所有行保存至指定的文件中

=  显示符合条件的行的行号

s///  查找条件可以使用模式,但要替换的内容不行

sed命令另一个称作"hold space"的内存空间

高级命令:

h  用模式空间中的内容覆盖保持空间的内容;

H  把模式空间中的内容追加至保持空间中内容的后面;

g  从保持空间中取到其内容,并将其覆盖模式空间中的内容;

G  从保持空间中取到其内容,并将其追加在模式空间中的内容的后面;

x  把保持空间和模式空间中的进行交换;

n  读取匹配到的行的下一行至模式空间;(会覆盖模式空间中的原有内容);

N  读取匹配到的行的下一行至模式空间,追加在模式空间中原有内容的后面;

d  删除模式空间中的内容;

D  删除多行模式空间中的首行;

地址定界:

n  数字直接指定行

$  最后一行

/regexp/  任何能够被/regexp/所匹配到的行

startline,endline

1,3

#,/regexp/  从#行开始,到第一次被/regexp/所匹配到的行结束,中间的所有行

/regexp1/,/regexp2/:从第一次被/regexp1/匹配到的行开始,到第一次被/regexp2/匹配到的行结束,中间的所有行

#,+n  从#行开始,一直到向下的n行

★注意:模式一定要在写在 ‘/ /‘ 之内

★注意:命令功能可使用!对地址定界进行取反;分号可用于分隔脚本

sed ‘地址定界[email protected]查找条件@替换文件@‘

修饰符:

g  global,全局替换

i  ignore-case,不区分字符大小写

示例1:

删除/etc/fstab文件中以#开头的行

示例2:

删除/etc/fstab文件中以第一个#开头,至第一个/开头的行

示例3:

把/etc/inittab文件中 id:5:initdefault: 行中的数字5替换为3

示例4:

删除/etc/init.d/functions文件中行首的#号

时间: 2024-10-13 16:58:24

sed命令——流编辑器的相关文章

文本处理三剑客之sed(流编辑器)

文本处理三剑客之sed(流编辑器) - 行编辑器 把当前处理的行存储在临时缓冲区,称为模式空间,然后把模式空间的内容送往屏幕,一行一行的处理,主要用来编辑一个或者多个文件. - 用法 sed [option]... 'script' inputfile... ###### - 常用选项 -n:不输出模式空间内容到屏幕,即不自动打印 默认会打印模式空间的内容加-n 可以只显示需要打印的行 [root@localhost home]# sed -n '2,3p' /etc/passwd bin:x:

sed命令行编辑器 【原创】

sed命令行编辑器 sed是非交互式的编辑器,它按行处理对象文件,但不修改处理文件本身,而是逐行读入文件内容并在临时缓存区保存副本并对其进行处理.处理完成每一行就将该行目标内容打印到屏幕,并将该缓存区内容删除,然后读入下一行进行处理.另外需要注意的是,和grep不同,sed不论是否知道指定的模式,它的退出状态都是0(Linux中通常代表真).只有存在语法错误时,sed的退出状态才不是0. 用单引号,双引号没有用 默认修改原文件, -n 静默显示 -i 修改源文件 -e 脚本 -f 指定文件,里面

介绍一款优秀的Ansys命令流编辑器PSPad

特色:语法高亮,自动完成,自定义语法定义文件 使用时,按crtl+J可以自动完成. 在输入的命令后按鼠标中键可以显示该命令的解释.在空白处按鼠标中键可 以显示ansys的命令,双击其中的命令就可以自动把命令输入,并且带上各种参数.选中一个文本区域块后按 Tab键可以设置自动对齐缩进. 下面把详细的设置方法奉献给大家: 1.首先安装最新版软件,我用的版本是4.50(2183),完成后运行程序为中文界面,里面包含有ansys的语法文 件. 2.点击"设置"菜单,选择"用户语法&q

流编辑器 SED 十分钟入门全教程

这里借用一下酷壳网sed博文的图来开题,超赞的-- 1. sed 简介及原理简析 1.1 sed 简介 Sed 是什么?相信很多人都有所了解,sed 全称StreamEDitor 即流编辑器.生于1973年or 1974年by 贝尔实验室的 Lee E. McMahon(已故),是基于交互式编辑器ed("editor", 1971)的脚本功能及更早的qed(quick editor ,1965-1966)(Sed 比 awk 要大那么几岁,所以客官莫急,过几天我们再来详解 awk).S

文本处理工具之SED流编辑器

文本处理三剑客之SED(流编辑器) sed的工作方式:在指定文件中,按行读取内容至模式空间,然后根据sed的scripts编辑改行内容,编辑完毕后输出至屏幕,再读取下一行进行处理.如果有该行内容未被处理完毕就有新的内容要进行编辑,则把该行内容移至保持空间中,,保持空间中的内容可以随时调回模式空间中. sed的使用 使用格式:sed [options...] 'scipts' file 常用选项: -n:不输出模式空间中的内容至标准输出(不自动打印) -e script:多点编辑sed -e '[

Linux sed命令小结

1.什么是sed sed,流编辑器,即stream editor.它可以将文本文件的每一行读取到内存,即所谓sed的模式空间,在这个模式空间中可以进行编辑并输出. 2.sed的使用格式 sed [options] "AdressCommand" file1,file2,... 说明: a.Adress实际上是用来确定编辑文件的范围,可以是精确的某一行,也可以是从某一行到某一行,也   可以用正则进行过滤匹配. b.Command表示将符合Address的行进行XXX操作.注意默认情况下

grep sed命令总结

我们经常会遇到从一个文件中查找某些信息或从一个日志文件中查找信息的处理文本文件的需求,本文介绍一下linux中处理文本工具的三剑客之中的grep和sed,在介绍之前,先介绍一下正则表达式: 正则表达式由一类特殊字符及文本字符所编写的模式,其中有些字符不表示其字面意义,而是用于表示控制或通配的功能 其中,基本正则表达式的元字符可以分为以下几种: 匹配字符: .:匹配任意单个字符 []:匹配指定范围内的任意单个字符 [^]:匹配指定范围外的任意单个字符 匹配次数:用在要指定其出现的次数的字符的后面,

Linux Shell学习-sed命令详解

(1).sed介绍 Sed是流编辑器,stream editor,它是一个将一些列编辑命令作用于一批文本文件的理想工具. (2).sed工作原理 Sed是一个非交互式文本编辑器,它可以对文本文件和标准输入进行编辑,标准输入可以是来自键盘输入.文件重定向.字符串.变量,甚至来自管道的文本. Sed从文本的一个文本行或标准输入中读取数据,将其复制到缓冲区,然后读取命令行或脚本的第一个命令,对此命令要求的行号进行编辑,重复此过程,直到命令行或脚本中的所有命令都执行完毕. 相对于诸如vi等其他文本编辑器

Linux学习笔记之grep命令及sed 命令相关选项

#grep  强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 根据模式,搜索文本 ,并将符合模式的文本行显示出来,常与正则表达式相结合使用. [[email protected] ~]# grep --h 用法: grep [选项]... PATTERN [FILE]... 在每个 FILE 或是标准输入中查找 PATTERN. 默认的 PATTERN 是一个基本正则表达式(缩写为 BRE). 例如: grep -i 'hello world' menu.h main.c