您的位置:首页

文本处理三剑客之sed

2018-04-12 15:09 330 查看

sed

1、简介

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如‘D’的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。 主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等。

2、用法

sed [OPTION]... {script-only-if-no-other-script} [input-file]...

3、选项

-n:不输出模式空间的内容到屏幕

-f SCRIPT_FILE:读取文件中的sed脚本来处理文本

-r:使用扩展的正则表达式

-i:直接修改原文件,-i,bak 可以先备份原文件

-e:sed -n -e 'script1' -e 'script2' 多点编辑,可以多个脚本一块处理文本

4、sed脚本

地址定界

不指定地址默认为对全文处理

n:指定第n行

/PATTERN/:被PATTERN匹配到的每一行

m,n:从m到n行

m,+n:从m行开始往后n行

/PAT1/,/PAT2/:从被PAT1匹配到的行开始到被PAT2匹配到的行

n,/PAT/:从指定n行开始到被匹配到的行

~:步进,比如1~2,从第一行开始每次跳2行,则表示奇数行

编辑命令

一.常用编辑命令

d:删除

p:打印

a [\]文本:将文本追加到指定行的下一新行

i [\]文本:将文本追加到指定行的上一新行

c [\]文本:将匹配到的字符串修改为文本字符串

w newfile:将匹配到的行另存为新文件

r oldfile:将文件中的内容读入模式空间并追加至被匹配到行的行后

=:显示行号

!:地址定界取反

s:查找替换s/待修改文本/修改文本/修饰符,分隔符也可用@、,、#等

g:全行替换

p:将修改后的文本打印到屏幕

w newfile:将替换成功的行另存为至新文件

二.高级编辑命令

P:打印模式空间中开端到换行

h:把模式空间中的内容覆盖到保存空间

H:把模式空间中的内容追加到保存空间

g:从保持空间取出数据覆盖至模式空间

G:从保持空间取出数据追加至模式空间

x:把模式空间中的数据和保持空间的数据互换

n:读取匹配到的行的下一行覆盖至模式空间

N:读取匹配到的行的下一行追加至模式空间

D:从模式空间的开始删除到换行的地方

记录于2018.4.12 15:08
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: