Linux 命令 - sed

Lastest updated on March 23, 2018

sed 可以对文件做些简单的修改。每次将一行文件存储在一个叫模式空间的临时缓冲区中,处理完后输出到屏幕,默认不修改文件内容除非重定向。

基本

sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)

file(s) 表示可以接一个或者多个文件

参数

参数 含义
-e –expression= 指定处理的脚本内容,可以使用多次,在同一行内执行多条命令
-n –quiet –silent 只显示处理完后的结果,没有变化的内容不会输出
-i 直接编辑文件,所有改动存入文件,不输出到屏幕
-f 导入处理的脚本内容

命令

分号分隔开不同的命令,命令前可以限定范围

1d 删除第一行

1,$d 删除第一行到最后一行

1~2d 从第一行开始,每两行删一行

$d删除最后一行

命令 含义
a 在当前行后插入文本
i 在当前行前插入文本
c 把选定的行替换成新的文本
d 删除
s 替换指定字符
p 打印内容
w filename 写出到文件(写当前行内容)sed -n '/test/w file' example 当前行有 test 就写入。
r filename 读入文件(读入所有文件)sed '/test/r file' filename当前行有test就读入文件内容。
q 退出(这个就没必要限定范围了吧)

搜索替换

grep 也能搜索,但是不能替换。两者都能用正则搜索,大同小异。记得转义符号。

标记 含义
g 当前行所有,没有加则只会处理遇到的第一个
p 打印
& 已经匹配到的内容
\[n] 代表匹配的子串,例如\1 , \2,就不用重复写正则表达式。原先的正则表达式部分要加圆括号。