sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;非交互式编译文件

语法: sed [options] '[command]' [filename] options: -n 抑制自动(默认的) 输出(全部打印) 读取下一个输入行, -n 要读取的行号 -e 执行多个sed指令 -f 运行脚本 -i 编辑文件内容 -i.bak 编辑的同事创造.bak的备份 -r 使用扩展的正则表达式

command: a 在匹配后追加 i 在匹配后插入 p 打印 d 删除 r/R 读取文件/一行 w 另存 s 查找 c 替换 y 替换 h/H 复制拷贝/追加模式空间(缓存区)到存放空间 g/G 粘贴 从存放空间取回/追加到模式空间 x 两个空间内容的交换 n/N 拷贝/追加下一行内容到当前 D 删除\n之前的内容 P 打印\n之前的内容 b 无条件跳转 t 满足匹配后的跳转 T 不满足匹配时跳转

例子: cp /etc/passwd . 拷贝一份passwd文件到当前家目录 sed '3p' passwd 不加-n时,将第3行内容打印一次并再次将整个文件内容打印 sed -n '3p' passwd 打印第3行内容 sed -n '1,3n' passwd 打印前3行内容 sed -n '1,3!p' passwd 打印文件除前3行之外的全部内容 sed -n '3,+3p' passwd 打印机第三行之后的三行

sed '1i ###############' passwd 在第一行插入###########内容并打印出来 sed '$a @@@' passwd 在末尾追加@@@内容并打印出来 sed '3c $$$' passwd 将第三行替换成¥¥¥

兄弟连教学视频总结了一下sed命令的使用 sed [选项] '[动作]' 文件名 选项: -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则会把经过sed命令处理的行输出到屏幕

-e:允许对输入数据应用多条sed命令编辑

-i:用sed的修改结果直接修改读取数据达的文件,而不是由屏幕输出

动作: a:追加,在当前行后添加一行或多行。添加多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。 c:行替换,用c后面的字符串替换原数据行,替换多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。 i:插入,在当期行前插入一行或多行。插入多行时,除最后一行外,每行末尾需要用“\”代表数据未完结。 d:删除,删除指定的行 p:打印,输出指定的行 s:字符串替换,用一个字符串替换另外一个字符串。格式为“行范围s/旧字符串/新字符串/g”(和vim中的替换格式相似)。