1.常见命令选项
-n 屏蔽默认输出
-i 直接修改文本内容
-f 使用sed脚本
-e 可指定多个处理动作
-r 启用扩展正则表达式,若与其他选项一起使用,应把r放在最前
-{} 可组合多个命令,以分号分割
基本的处理动作
p 打印行 4,6p 输出4,5,6行4p,6p 输出4行,6行
d 删除行 4,6d 删除4,5,6行
s 字符串替换 s/old/new/ 将每行的第一个old替换成new
s/old/new/3 将每行的第三个old替换成new
s/old/new/g 将全部的old替换成new
替换操作的分隔符"/"可以用其他字符代替,如&,#,便于修改文件路径
输出文本sed -n 'p' aa.txt 输出书有行,相当于cat aa.txt相同
sed -n '6p' aa.txt 输出第6行
sed -n '4,7p' aa.txt 输出4,5,6,7行
sed -n '4,+5p' aa.txt 输出第4行以及其后的5行
sed -n '/^root/p' aa.txt 输出以root开头的行
sed -n 'p,n' aa.txt 输出奇数行,n表示读取下一行文本
sed -n 'n,p' aa.txt 输出偶数行,n表示读取下一行文本
sed -n '5,${n,p}' aa.txt 输出从第五行至文件末尾的所有偶数行
sed -n '$=' aa.txt 输出文件的行数
删除文本
sed -n '4,7d' aa.txt 删除4,5,6,7行
sed -n '/bin/d' aa.txt 删除包含bin的行
sed -n '/bin/!d' aa.txt 删除不包含bin的行,!表示取反
sed -n '/^bin/d' aa.txt 删除以bin开头的行
sed -n '/^$/d' aa.txt 删除所有空行
sed -n '/^$/{n;/^$/d}' aa.txt 删除重复空行,连续的空行只保留一个
替换文本
sed -n 's/aa/AA/' aa.txt 将每行中的第一个aa替换成AA
sed -n 's/aa/AA/4' aa.txt 将每行中的第4个aa替换成AA
sed -n 's/aa/AA/g' aa.txt 将文本所有的aa替换成AA
sed -n 's/aa//g' aa.txt 将文本所有的aa替换成空,相当于删除
sed -n 's/aa/&s/g' aa.txt 将文本所有的aa替换成aas,&表示查找到的字符
sed -n '4,6s/^/#/' aa.txt 将文本4,5,6行的开头加上#,相当于注释代码
sed -n '4,6s/^#//' aa.txt 将文本4,5,6行的开头#号去掉,相当于删除注释
sed的文本块处理
操作符 用途 命令示范i 行前插入文本 2iAA,在第2行前面插入文本行AA
2,4iAA,在第2-4行每行前面插入文本行AA
a 行后插入文本 2aAA,在第2行后面插入文本行AA
2,4aAA,在第2-4行每行后面插入文本行AA
c 替换当前行 2cAA,把第二行内容替换成AA
导入到处操作
操作符 用途 命令示范 解释r 读取文本 2r a.txt 在第2行的下面插入a.txt文件
2,4r a.txt 在第2-4行每行下面插入a.txt文件
w 保存到文件 2w a.txt 将第2行的内容保存为a.txt文件
2,4w a.txt 将第2-4行的内容保存为a.txt文件
sed复制剪切
模式空间
-存放当前处理的行,将处理的结果输出
-若当前行不符合处理条件,则原样输出
-处理完当前行再读入下一行进行处理
保持空间
-类似于windows的剪切板
-默认存放一个空行(换行符 \n)
基本动作
复制
H:模式空间--->追加--->保持空间
h:模式空间--->覆盖--->保持空间
粘贴
G:保持空间--->追加--->模式空间
g:保持空间--->覆盖--->模式空间
示范
1)把1-3行复制到文件末尾