Chinaunix首页 | 论坛 | 博客
  • 博客访问: 239335
  • 博文数量: 91
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 955
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-12 09:38
文章分类

全部博文(91)

文章存档

2017年(1)

2011年(1)

2008年(15)

2007年(74)

我的朋友

分类: LINUX

2007-08-18 09:38:53

sed:
 syntax: sed [options] 'command' [files]
       sed [options] -e 'conmand1' -e 'command2' ......[files]
       sed [options] -f script [files]

每次读取一行
 frequently options
  -e cmd[command abbreviate]
          the next argument is a command.this is not need for a single command, but is required for all commands when multiple commands was specified
  -f file     the next argument is a script
  -g treat all substitution as global
  frequence used parameter
  d     delete lines
  y    translate characters. similar to the tr command.(针对每一个字符)
  s    make stitution. the syntax is s/pattern/replacement/[flags](把pattern看作一个整体)
  the following flags can be specified for the s command:
  g replace all instance of pattern, not just the first
  n replace nth instance of pattern, the default is 1
  p print the line if a successful substitution is done. generally used with the -n command-line option
  w file            print the line to file if a successful is done
  
for example:
  delete lines 3 through 5 of file
  sed '3,5d' file1
  delete the lines of file1 that contain a # at the begin of the line:
  $sed '/^#/d' file1
  delete any line that don't contain #keepme:
  sed '
/#keepme/!d' file1
  delete lines containing only whitespace(spaces or tabs). in the example, tab means the single tab character and is precede by a single space
  sed '
/^[ tab]*$/d' file1
  subtitute a single space for any number of spaces wherever they occur on the line:
  sed '
s/ */ /g' file1
  substitue def for abc from line 11 to 20, wherever it occurs on the lines:(是将字符串abc替换,而不是每一个字母)
  sed '
11,20s/abc/def/g' file1
  translate the characters a, b, c to the @ character from line 11 to 20, wherever they occur on the line:
  sed '
11,20y/abc/@@@/'
  translate characters sed '
y/abc/xyz/' file1 every instance of a is replaced to x, b to y, c to z.
  write the @ symbol for all empty line in file1
  sed '
/^$/@/g' file1
  将所有的小数替换成&*,和appel替换成apple
  sed -e s/[0-9]\.[0-9][0-9]/&*/g -e s/appel/apple/g
  substitution all after brucket to blank(替换所有以'
'开头的为空)
  $id|sed 's/(.*/ /'
  use the command from the external file sedmds.replace the third and fourth double quotation marks with ( and ) on lines 1 through 10 in file1.make no change from 11 to the end of the file.script file sedmds contains:
  1,10{
  s/"/(/3
  s/"/)/4}
  the command is execute using the -f option
  sed -f sedcmds file1
  in the example, since the third double quote has been replace with (, it is no counted as a double quote by the second command. thus, the second command will operate on the fifth double quote character in the original file1. if the input line starts out with:" " " " "  and the stitution consequence is " " ( " )
  when stitution characters is error. above instance is ok.

假如文件files里含有如下的内容:

pintf "please input a file"

printf "I hava inputed file"

执行如下的命令

$sed 's/i/@/2/'  files

输出结果如下:

pintf "please @nput a file"

printf "I hava @nputed file"

  一些有用的正则表达式
  /^$/    空白行
  /^.*$/   一整行
  /*/     一个或多个空格
  /<[^>]*>/  HTML(或XML)标记符
  /[a-zA-z][a-zA-Z]*:[0-9a-zA-Z]*.*/  有效的URL
  /\$[0-9]*\.[0-9][0-9]/          格式化的美元数

阅读(671) | 评论(0) | 转发(0) |
0

上一篇:linux下的ps command

下一篇:linux下的awk command

给主人留下些什么吧!~~