Chinaunix首页 | 论坛 | 博客
  • 博客访问: 173587
  • 博文数量: 66
  • 博客积分: 1736
  • 博客等级: 上尉
  • 技术积分: 830
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-05 15:40
文章分类

全部博文(66)

文章存档

2014年(17)

2013年(2)

2012年(47)

我的朋友

分类: LINUX

2012-11-27 14:23:52

  sed(流编辑器),用来在命令行中直接更改一个文件中的内容,这个命令对于使用

  shell脚本自动批量更改大量文本文件比较有用.如你当前目录中有10000个文本文件

  ,假设文件名从text.1到text.10000,若你希望更改这10000个文件,一种方法是使用

  如vi这样的文本编辑器来逐一进行更改,而对于优秀的管理员来说它们可能会书写一个

  shell脚本来使用sed批量进行更改.本文就是sed这个命令的快速入门教程.

  (1).基本格式

  sed [-nefri] [动作] [Input_File]

  选项:

  -n :表示安静模式操作,也就是只将被更改的行输出,没更改的行不输出,默认sed

  是输出所有的行

  -e Scrip:指定sed的执行命令可以指定多个这个选项

  -f Script_File:指定执行一个包含sed命令的脚本文件

  -r:支持扩展的正则表达式(默认只支持基础的正则表达式)

  -i:直接操作原文件,默认是不更改原文件的,而只是将更改结果直接输出到

  标准输出上,可以使用这个选项来让sed直接更改原文件

  动作:

  基本格式: [n1[,n2]] Function

  说明:n1和n2用来指定修改的范围(从第n1行到第 n2行),他们不一定必须指定

  若都没指定则表示修改整个文件,若没有指定n2则表示修改的范围为从n1

  到文件末尾.

  注:n1,n2可以为数字,表示第N行(从1开始),当然也可以用'/Pattern/'来指定

  表示使用查找来指定函数,即查找到最先包含Pattern的行为该指定的行数

  Function有以下值:

  (1).插入

  [1].i String:表示当前行前面插入一行,内容为String

  [2].a String:表示当前行后面插入一行,内容为String

  (2).删除

  d:表示将指定的行删除

  (3).替换

  [1].c String:指定整行替换为String

  [2].s/Find_String/Replace/:表示用Replace替换Find_String

  (4).打印

  p:表示将选择的行打印出来

  下面是一些实例:

  假设文件 example.txt的内容如下

  #############################example.txt内容开始###############

  line1 hello world1

  line2 hello world2

  line3 hello world3

  #############################example.txt内容结束###############

  (1).在第1行后面插入一行,内容为Insert after line1

  sed -i -e '1a Insert after line1' example.txt

  结果example.txt内容为:

  line1 hello world1

  Insert after line1

  line2 hello world2

  line3 hello world3

  (2).在第一行前面插入一行,内容为Insert before line1

  sed -i -e '1i Insert before line1' example.txt

  结果:

  Insert before line1

  line1 hello world1

  Insert after line1

  line2 hello world2

  line3 hello world3

  (3).删除第2到第4行

  sed -i -e '2,4d' example.txt

  结果:

  Insert before line1

  line3 hello world3

  (4).打印第2行

  sed -e '2p' example.txt

  (5).将第2行替换为line2 hello world

  sed -i -e '2c line2 hello world' example.txt

  结果:

  Insert before line1

  line2 hello world

  (6).替换第二行的hello world为world hello

  sed -i -e '2s/hello world/world hello/' example.txt

  结果:

  Insert before line1

  line2 world hello

  好了sed简单入门就讲到这里了,由于sed命令实在太好用了,也太强大了,因此要

  熟练使用sed还必须参考完整的sed手册页或其他高手写的教材,本文只是一个简单

  的入门教材而已

 
 
更多精彩文章尽在:

文章资料由新居网卧室门栏目整理推荐。
 
 
阅读(682) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~