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

流编辑器 sed

模式空间,默认不编辑原文件,仅对模式空间中的数据做处理;处理结束后,将模式空间中数据打印至屏幕。sed是一个行编辑器。

sed [options] ‘Address Command‘ file ...

Option:

-n: 静默模式, 不再默认显示模式空间中的内容
-i: 直接修改原文件
-e SCRIPT 可以同时执行多个脚本, 操作
-f /PATH/TO/SED_SCRIPT  如: sed -f /path/to/scripts file ( 指定 sed 的脚本文件)
-r: 表示使用扩展正则表达式

Address 地址定界:

1、 StartLine,EndLine 比如 1,10 $:最后一行
2、 /RegExp/ 如/^root/, root 开头的所有行,模式匹配
3、 /pattern1/,/pattern2/ 第一次被 pattern1 匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行
4、 LineNumber指定的行
5、 StartLine, +N 从 startLine 开始,向后的N行。

Command:


1、d: 删除符合条件的行;

2、p: 显示符合条件的行;

3、a \”string”: 在指定的行后面追加新行, 内容为 string;

4、\n: 可以用于换行

5、i \”string”: 在指定的行前面添加新行, 内容为 string
6、r FILE: 将指定的文件的内容添加至符合条件的行处
7、w FILE: 将地址指定的范围内的行另存至指定的文件中;
8、= 显示符合条件行的行号
8、s/pattern/string[&]/修饰符: 查找并替换, 默认只替换每行中第一次被模式匹配到的字符串。 &: 引用模式匹配整个串 修饰符 g: 全局替换 i: 忽略字符大小写

sed练习


sed练习:

1. 删除/etc/grub.conf文件中行首的空白符;

sed [email protected]^[[:space:]]*@@‘ /etc/grub.conf

sed -r ‘[email protected]^[[:space:]][email protected]@g‘ /etc/grub.conf

2. 替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;

sed ‘[email protected]\(id:\)[0-9]\(:initdefault:\)@\15\[email protected]‘ /etc/inittab

3. 删除/etc/bashrc文件中的空白行;

sed ‘/^$/d‘ /etc/bashrc

4. 删除/etc/inittab文件中开头的#号;

sed ‘[email protected]^#@@g‘ /etc/inittab

5. 删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;

sed -r ‘[email protected]^#[[:space:]][email protected]@g‘ /1.txt  (将下面说明中的例子,创建成/目录下名字为1的txt文件)

6. 删除某文件中以空白字符后面跟#类的行中的开头的空白字符及#;

sed -r ‘[email protected]^[[:space:]]+#@@g‘ /1.txt  (将下面说明中的例子,创建成/目录下名字为1的txt文件)

7. 取出一个文件路径的目录名称;

echo "/home/zrs/" | sed -r ‘[email protected]^(/.*/)[^/]+/[email protected]\[email protected]‘ (以/home下的/zrs目录为例)

8. 取出一个文件路径的基名。

echo "/home/zrs/" | sed -r ‘[email protected]^/.*/([^/]+)/[email protected]\[email protected]‘ (以/home下的/zrs目录为例)

时间: 2024-10-13 23:25:04

文本处理三剑客之sed流编辑器的相关文章

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

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

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

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

文本处理三剑客之sed

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

文本工具三剑客:sed

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

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

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

Linux基础之sed流编辑器详解

之前介绍了三大文本编辑器的grep,这里介绍比grep功能更强的sed流编辑器 sed是什么? sed是Stream EDitor的缩写,man中对sed的简洁为 sed - stream editor for filtering and transforming text 它的主要功能是对文本的过滤与替换. sed的工作原理 sed的工作过程:sed是一个流编辑器,所谓流编辑器是指sed每次只从文件或stdin中读入一行,将读入的行保存至模式空间然后根据指定的要求对其进行处理,并将处理后的结果

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

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

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

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

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

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