您的位置:首页 > 运维架构 > Linux

linux基础命令之sed

2016-05-30 17:11 579 查看

什么是sed?

sed是一个流编辑器,英文全名为stream editor,流的意思就是能处理文件或者通过管 道传输来的数据。主要针对行,也就是行编辑。默认是不编辑文件的,处理时,把当前 处理的行存储在临时缓冲区中,称之为模式空间(pattern space),接着用sed命令处理 缓冲区中的内容,处理完成后,默认把缓冲区的内容送往至屏幕,接着处理下一行。仅 对模式空间中的数据做处理,处理结束后将模式空间打印至屏幕

·sed的用法

sed [options] ‘AddressCommand’ file

options

-e SCRIPT 可以同时执行多个addresscommand,sed -e …… -e ……

-n 静默模式,不显示模式空间中的内容

-i 直接修改原文件

-r sed默认不支持扩展的正则表达式,-r则支持

-f 执行指定文件,该文件内容为addresscommand的一系列格式

address

1 startline,overline 用逗号分割

2 /pattern/ 用正则表达式即可

3 /pattern1/,/pattern2/ 第一次被模式匹配的行开始,到第一次被模式2匹配到的行 结束

4 linenumber 指定的行,其中$表示最后一行。

5 startline +n 从指定行开始,向后的n行,共n+1行。

command 若有多个命令用;分开

d 删除符合条件的行

p 输出行,n和p一起用表示只打印那些发生变换的行

a\ 在当前行下面插入文本

i\ 在当前行上面插入文本

q 退出sed

n 读取下一行,用下一个命令处理新行,而不是第一个命令。

a(此处有空格)\’string’ 在指定的行后追加新行,内容为string

i(此处有空格)\’string’ 行前

r(此处有空格)file 将指定文件内容添加至符合条件的每行后面,可用来将两个 文件合并

w(此处有空格)file 指定范围内行另存为指定文件中。

s/// /pattern/string/修饰符 查找pattern并替换为string,默认只替换每行中第一次 被匹配到的字符串。/可以用@ #等代替。

修饰符 g 全局替换

i 忽略大小写

假设处理的文本为test.file

在每行的头添加字符,比如"HEAD",命令如下:

sed 's/^/HEAD&/g' test.file

在每行的行尾添加字符,比如“TAIL”,命令如下:

sed 's/$/&TAIL/g' test.file

在指定行的末尾添加内容:

Cat file

Aaaa

Bbbb

Cccc

Sed ‘s/cc.*/& eeee/g’ file
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: