sed命令:基础学习

sed:流编辑器,用来把文档里面的文字经过一系列编辑命令转换为另一种格式输出;通常用来匹配一个或多个正则表达式的文本进行处理。

重要:sed编辑器自身不会修改文本文件中的数据,它只是将修改后的哦数据发送到STDOUT。

使用sed的帮助手册:

  • man sed | less
  • info sed
  • sed --help | less

1.sed命令行常用选项

-i      将sed处理结果直接插入到文件中

-f      按照指定sed脚本里的命令来进行处理

-r      在脚本中使用扩展正则表达式

-n        去掉自动打印模式空间

2.sed常用命令

a \      在当前行的后面追加一行文本

i \       在当前行的前面插入一行文本

c \      用新的文本改变当前行的文本

d        从匹配模式的位置删除行

D          删除首行

p        打印匹配模式的行

w        写入文件

s/re/string     替换字符串

=        打印当前行号码

3.关于sed行寻址

sed流编辑器默认将使用的命令作用于文本数据的所有行。当然,如果想将命令作用于某些行,这就要使用行寻址

行寻址有两种:

  • 数字方式的行寻址
  • 文本模式过滤方式的行寻址
3.1数字方式的行寻址
  1. 起始行号      sed -n ‘1p' file         
  2. 结尾行号      sed -n '$p' file
  3. 指定单个行号    sed -n '3p' file  
  4. 指定行号范围    sed -n '2,3p' file
3.2文本模式过滤方式的行寻址

  语法格式:sed ’/pattern/command‘ file

4.sed基础实例

4.1文本替换 s

使用命令s可以进行文本替换,语法如下:

  s/regexp/replacement/

sed主要有4种可用的替换标记,其作用为:让替换命令对一行中不同地方出现的文本都起作用,在替换命令字符串之后进行设置。

  sed ’s/string/test/2' file    替换第二处模式匹配的地方

  sed ‘s/string/test/g’ file    替换file中所有模式匹配的地方

  sed -n ‘s/string/test/p’ file   打印指定模式匹配的行

  sed ‘s/string/test/w newfile' file   将替换的文本写入到新文件中

4.2删除行  d

使用命令d可以进行删除行操作。

  sed ’5d' file      删除文件第5行

  sed ‘5,8d’ file     删除文件第5到第8行

  sed ‘5,$d' file     删除文件第5行到结尾

  sed ’/test/d‘ file    删除匹配test的行

4.3插入文本 i \

使用命令i \可以在指定地址前插入一行。

  sed ’2i\string' file    在第2行前插入新行string

  sed ‘/test/i\string' file   在匹配test出现的行前插入新行string

4.4追加文本 a \

使用命令a \可以在指定地址后追加一行。

  sed ’2a\string' file    在第2行后追加新行string

  sed ‘/test/a\string' file   在匹配test出现的地址后追加新行string

4.5修改行 c \

使用命令c \可以修改数据流中整行文本的内容。

  sed ’5c\This is line number 5.' file  修改数据流第5行内容为This is line number 5.

  sed '/string/c\test' file         修改匹配string出现的行为test

4.6转换命令 y

  语法: y/source/dest/ 

  sed ‘y/123/456/' file  

4.7文本打印 p  

小写p打印文本行    sed ’3p‘ file

等号(=)打印行号   sed ’=‘ file

小写l用来列出数据流中的文本和不可打印的ASCII字符

4.8写入文件 w

使用命令w可以用来向文件写入行。

  sed ’3,8w newfile' oldfile

  sed '/test/w newfile' oldfile

4.9读取文件 r

使用命令r可以将一个独立文件中的数据都插入到数据流中。

  sed '$r file2' file1  将file2中的所有文本都插入到file1的末尾。

posted @ 2013-05-04 23:15  smstars_test  阅读(1065)  评论(0编辑  收藏  举报