文本处理三剑客之sed基本用法

sed:streameditor,意为流编辑器,是类Unix操作系统常见的命令行程序。sed用来把文档或字符串里面的文字经过一系列编辑命令转换为另一种格式输出;sed通常用来匹配一个或多个正则表达式的文本进行处理。

sed工作原理:

sed维护了两个数据的缓冲空间:模式空间(patternspace)和保留空间(hold space),初始环境都为空;

1、当sed命令对一个文本文件进行处理,逐行读取文本文件进行地址匹配,将匹配到的行放在模式空间中;

2、sed的编辑命令对模式空间中的内容进行编辑操作,然后将编辑后的内容放在保留空间;

3、继续读取下一行执行以上操作,直到最后一行;

正则表达式:与之前学习到的grep命令一样,sed命令的地址模式匹配支持正则表达式;

BRE:

字符匹配:.,[],[^]

次数匹配:*,\?,\+,\{m,n\}

位置锚定:^,$,\<,\>

分组引用:\(\),\1,、2...

ERE:

次数匹配:*,?,+,{m,n}

分组:()

或者:|

sed命令格式:

# sed [option] ‘地址·编辑命令‘ FILE

sed常用选项:

-n:静默模式,不显示模式空间中的内容
-r:支持使用扩展正则表达式;
-i:修改原文件;
-e:sed -e ""-e "" -e "",sed "{COM1;COM2;COM3}";表示使用多个命令
-f /PATH/TO/SED_SCRIPT:从指定的文本中读取处理脚本;

编辑命令:命令可在之前加!取反

p:打印;
d:删除;
i \TEST:匹配到的行上方插入TEST内容;
a \TEST:匹配到的行下方插入TEST内容;
c \TEST:修改匹配到的TEST内容;
r /PATH/TO/SOME_FILE:匹配到的内容下方插入指定文件;
w /PATH/TO/SOME_FILE:把符合条件的行保存至指定的文件中;
=:显示符合条件行的行号;
 
s/TEST1/TEST2/gi,[email protected]@[email protected]:内容替换

地址:

行范围:

sratr_line,end_line:起始行,结束行

/patten1/,/patten2/:第一次被pattern1匹配到的行开始,到第一次被pattern2匹配到的行结束之间的所有行;

特定行:

line

/pattern/

无地址:全文

实例练习:

1、复制/etc/inittab文件至/tmp/目录,替换/tmp/inittab文件中的"id:3:initdefault"一行数字为5;

# cp /etc/inittab /tmp/
# sed‘s/id:3:initdefault/id:5:initdefault/‘ /tmp/inittab

2、复制/etc/rc.d/init.d/functions文件至/tmp目录,删除/tmp/functions文件的空白行;

# cp /etc/rc.d/init.d/functions/tmp/
# sed ‘/^[[:space:]]*$/d‘/tmp/functions

3、复制/boot/grub/grub.conf文件至/tmp/目录,删除/tmp/grub.conf文件中行首的空白字符;

# cp /boot/grub/grub.conf /tmp/
# sed ‘[email protected]^[[:space:]]\[email protected]@‘/tmp/grub.conf

4、echo一个路径给sed,通过sed取出其路径名;例如echo"etc/sysconfig/network-scripts/" | sed,返回路径名/etc/sysconfig/;

# echo"/etc/sysconfig/network-scripts/" | sed ‘[email protected][^/]\+/\[email protected]@‘
时间: 2024-12-22 08:50:43

文本处理三剑客之sed基本用法的相关文章

文本处理三剑客之-sed基础用法

文本处理三剑客: grep,egrep,fgrep:文本过滤器 sed:stream EDitor:流编辑器,行 awk:文本格式化工具,报告生成器 sed [OPTION]...'script' [input-file]      script:地址定界编辑命令                [option]           -n:不输出模式空间中的内容至屏幕           -e:多点编辑           -f /path/to/sed_script_file:         

文本处理三剑客之sed基础用法

sed简介: sed是Stream EDitor的缩写,也就是流编辑器的意思,准确的说sed是一个交互式的面向字符流的编辑器,这是因为输入的数据通过sed程序并直接输出到标准输出(可以是显示器或者文件). sed功能: 每次从文件中读取一行通过解释脚本指定的执行动作来处理这一行(一行要历经所有处理动作),然后开始下一行,直到结束.执行动作可以是多个(用:隔开每个动作),解释脚本也可以是多个,可以实现删除,插入,查找替换等等强大功能,但是一般不编辑源文件,也就是说源文件内容不发生变化. sed原理

文本处理三剑客之-sed高级用法

高级编辑命令:      h:把模式空间中的内容覆盖至保持空间中      H:把模式空间中的内容追加至保持空间中      h H  Copy/append pattern space to hold space           g:把保持空间中的内容覆盖至模式空间中      G:把保持空间中的内容追加至模式空间中      g G  Copy/append hold space to pattern space.           x:把模式空间中的内容与保持空间中的内容互换    

文本处理三剑客之sed

文本处理三剑客之sed sed概述 sed使用示例 sed的高级应用 sed概述 sed, 作为文本三剑客之一,其定位就是一个编辑器, 而且sed是一个流式编辑器(stream editor),其主要功能是过滤和转换文本. sed - stream editor for filtering and transforming text 作为一个强大的文本处理功能,sed 自然能够配合正则表达式,另外,所谓流编辑器,sed 是逐行地读取文本,在文本行中应用指定的命令,且默认输出到stdout; se

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

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

文本工具三剑客:sed

文本工具三剑客:sedsde是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓存区,称为 模式空间    用法:    sed [选项] [加自己的语言] [要处理的文件]    选项:        -n  不输出模式中的内容至屏幕            # sed -n "10p" f2 只打印出第10行匹配到的行 其他不显示            10  UUID=07a475f4-3d7a-4b27-9ec9-500bc8a19c4d /boot      

Linux文本处理“三剑客”之sed

sed(Stream Editor)是一个行编辑工具.下面我们介绍 sed 的实现原理和基本使用方法. 一.sed 的处理文本的流程 基本处理流程如下: 处理流程是:每次读入文本文件的一行到内存中的模式空间中,在模式空间中处理后将处理的结果输出,默认会打印到屏幕上.因此,默认情况下,不会改变原文件的内容. 二.sed 命令的使用 基本语法:sed [options]... '地址定位 编辑命令' FILE... 地址定位的方法: 1.行定位: start_line[,end_line] 2.模式

Linux 篇 | 文本处理三剑客之SED

文本处理三剑客之SED sed不仅可以像grep过滤文件,查找想要的内容,还可以更改文件,这是grep做不到的. 一.sed介绍 Stream EDitor, 行编辑器 sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.然后读入下行,执行下一个循环.如果没有使诸如'D'的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间.这

8.9_Linux文本处理三剑客之sed和文本编辑利器vim的使用

本文处理三剑客之sed的使用   什么是sed? Stream EDitor(简称sed), 行编辑器,一次只读一行,只处理一行,不对源文件做处理,至输出到屏幕上. sed是一种流编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕.接着处理下一行,这样不断重复,直到文件末尾.文件内容并没有改变,除非你使用重定向存储输出.sed主要用来自动编辑一个或多