sed简介

  1. 一种新型的,非交互式的编辑器(vi编辑器为交互式)
  2. sed编辑器没有破坏性,它不会修改文件
  3. 默认输出到屏幕

sed工作过程

1.从文件中读入一行数据并把它保存在临时缓冲区中
2.处理临时缓冲区的内容,并将处理结果发送到显示器上
3.逐行处理文件所有内容直到最后一行

sed 命令语法

sed [选项] ‘脚本’ 文件

选项

-n  使用安静模式
-e  多重编辑选项
-f   指定一个 sed 脚本文件到命令行执行
-r   sed 使用扩展正则表达式
-I   直接修改文档读取的内容,不在屏幕上输出

将文件file中的A用you来替换

sed –n ‘s/A/you/p’ file

在第一行前增加一行’ZS 90 85 B’,然后删除包含字符串” FC”的行

sed -e '1i ZS 90 85 B' -e '/FC/d' file

脚本

地址定位:用于确定处理哪些行

单地址:n,指定的行,如:sed ‘3s/A/you/’ file
地址范围:n1,n2、n1,+n2、 /pat1/,/pat2/、 n1,/pat1/ 
/pat/:模式pat所能够匹配到的每一行
~:步进,1~2 奇数行、 2~2 偶数行
不给地址:对全文进行处理

将文件file中的奇数行中的A用you来替换

sed '1~2 s/A/you/' file

将文件file中的/C/和/A/之间的A用you来替换

sed ‘/C/,/A/ s/A/you/’ file

编辑命令:对文本进行增删改查等操作

a:在指定行后面追加文本;支持使用\n实现多行追加 
i:在指定行前面插入文本 
d:删除匹配的行
s:替换字符串, s///,s@@@,s###
c:替换匹配行

在文件file中的第一行后增加两行,”Hello Linux!\nHello sed!”

sed '1a Hello Linux!\nHello sed!' file

删除文件file包含字符9的行

sed '/9/d' file

将文件file中的字符串/bin/bash替换成/bin/csh

sed 's#/bin/bash#/bin/csh#' file   (采用#号分隔符)

将第3行用”Hello sed!”替换

sed '3c Hello sed!' file

将包含字符A的行用”Hello sed!”替换

sed '/A/c Hello sed!' file

sed正则中的元字符

^:表示行首 
$:表示行尾 
[a-z0-9]:表示字符范围
[^]:表示除了字符集中的字符以外的字符
. :表示任意字符 
*:表示零个或者多个

将以字符A开头的行用”Hello sed!”替换

sed '/^A/c Hello sed!' file

将以字符A的结尾的行用”Hello sed!”替换

sed '/A$/c Hello sed!' file

将以字符A、B开头的行用”Hello sed!”替换

sed '/^[AB]/c Hello sed!' file