`

unix shell学习笔记4

 
阅读更多

5. sed

 

5.1      sed 简介

在线编辑器,一次处理一行内,处理后,不改变文件内容。

5.2      sed命令

sed [options] ‘command’ file(s)

sed [options] –f scriptfile file(s)

command

a\         在当前行后面加入一行文

b lable  分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末

c\         从模板块(Pattern space)位置删除

D         删除模板块的第一

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

h             拷贝模板块的内容到内存中的缓冲区。

H             追加模板块的内容到内存中的缓冲区

g              获得内存缓冲区的内容,并替代当前模板块中的文本。

G             获得内存缓冲区的内容,并追加到当前模板块文本的后面。

l               列表不能打印字符的清单。

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

N             追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码。

p             打印模板块的行。

P             打印模板块的第一行。

q             退出Sed

r file       file中读行。

t label    if分支,从最后一行开始,条件一旦满足或者Tt命令,将导致分支到带有标号的命令处,或者到脚本的末尾。

T label   错误分支,从最后一行开始,一旦发生错误或者Tt命令,将导致分支到带有标号的命令处,或者到脚本的末尾

w file     写并追加模板块到file末尾。

W file    写并追加模板块的第一行到file末尾。

!              表示后面的命令对所有没有被选定的行发生作用。

s/re/string string替换正则表达式re

=             打印当前行号码。

#             把注释扩展到下一个换行符以前。

 

g表示行内全面替

p表示打印行。

w表示把行写入一个文件。

x表示互换模板块中的文本和缓冲区中的文本。

y表示把一个字符翻译为另外的字符(但是不用于正则表达式)

 

option

-V打印版本和版权信

 

5.3      sed实例

$ sed '2,$d' example

 

删除example文件的第二行到末尾所有

 

 $ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest

$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加localhost,变成192.168.0.1localhost

$ sed '/test/,/check/s/$/sed test/' example-----对于模板testwest之间的行,每行的末尾用字符串sed test

$ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics