Linux命令之文件处理 -sed

时间:2022-08-18 16:27:24
sed是文件处理工具,其本身是管道命令,主要以行为单位进行替换、删除、新增、选取等操作.
sed命令格式为:
  sed [-nefri] 'command' 输入文本

常用选项:
  -n∶使用安静(silent)模式;sed的一般用法中,stdin的数据都会stdout,加上该参数后,则只有经过sed处理的那行才会stdout;
  -e∶直接在指令列模式上进行sed的编辑;
  -f∶从文件中读取操作;
  -i∶直接修改读取的档案内容,而不是由萤幕输出;

常用命令:
  a∶新增;其后可接字符串,这些字符串会在下一行出现;
  c∶取代;其后可接字符串,这些字符串可取代n1,n2之间的行;
  d∶删除;
  i∶插入;其后可接字符串,这些字串会在上一行出现;
  p∶列印;亦即将某个选择的资料印出;通常与参数-n一起使用;

  s∶替换;通常与正则表达式一起使用;


举例:(假设我们有一文件名为ab)

###删除某行
[root] sed '1d' ab     #删除第一行 
[root] sed '$d' ab     #删除最后一行
[root] sed '1,2d' ab   #删除第一行到第二行
[root] sed '2,$d' ab   #删除第二行到最后一行

###显示某行
[root] sed -n '1p' ab    #显示第一行 
[root] sed -n '$p' ab    #显示最后一行
[root] sed -n '1,2p' ab  #显示第一行到第二行
[root] sed -n '2,$p' ab  #显示第二行到最后一行

###使用模式进行查询
[root] sed -n '/ruby/p' ab  #查询包括关键字ruby所在所有行
[root] sed -n '/\$/p' ab    #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义

###增加
[root] cat ab
Hello!
ruby is me,welcome to my blog.
end

[root] sed '1a drink tea' ab  #第一行后增加字符串"drink tea"
Hello!
drink tea
ruby is me,welcome to my blog. 
end

[root] sed '1,3a drink tea' ab #第一行到第三行后增加字符串"drink tea"
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea

[root] sed '1a drink tea\nor coffee' ab   #第一行后增加多行,使用换行符\n
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end

###替换
[root] sed '1c Hi' ab   #第一行代替为Hi
Hi
ruby is me,welcome to my blog.
end

[root] sed '1,2c Hi' ab   #第一行到第二行代替为Hi
Hi
end

###替换 格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
[root] sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替换ruby为bird
[root] sed -n '/ruby/p' ab | sed 's/ruby//g'     #删除ruby

###插入
[root] sed -i '$a bye' ab   #在文件ab中最后一行直接输入"bye"
[root] cat ab
Hello!
ruby is me,welcome to my blog.
end
bye

###删除匹配行
###sed -i '/匹配字符串/d'  filename 

###替换匹配行中的某个字符串
###sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/g' filename

转载自: http://www.cnblogs.com/dong008259/archive/2011/12/07/2279897.html