sed简介
- 一种新型的,非交互式的编辑器(vi编辑器为交互式)
- sed编辑器没有破坏性,它不会修改文件
- 默认输出到屏幕
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