sed 主要用来编辑一个或多个文件,简化对文件的反复操作(如:输出、删除、替换、复制、剪切、导入、导出等各种操作)或者用来编写转换程序等。正常情况下,sed
命令所做的处理只是把操作结果(包括打印、删除等)输出到当前终端屏幕,而
并不会对原始文件做任何
更改
。
若希望直接修改文件内容,应添加选项
-i
。
命令格式:
sed [参数] ‘ [定址符]处理动作’ 文件名
参数:
-i:直接修改文件内容,而不是输出到终端。
-n:安静模式,屏蔽默认输出(全部文本),只有经过 sed 特殊处理的那一行才会被列出来。
-e :指定 sed 动作,可以由多个-e 指定多个动作。
-r:启用扩展的正则表达式,若与其他选项一起使用,应作为首个选项
-f :直接将 sed 的动作写在一个文件内,-f filename 则可以运行 filename 内的 sed 动作;
--help:显示帮助。
--version:显示版本。
定址符:
格式为 [n1[,n2]]
function
其中[n1[,n2]]称为定址符,用来定义需要操作的文本,如指定处理的起、止行数。n1, n2 不见得会存在,一般代表“选择进行动作的行数”,举例来说,如果我的动作是需要在10 到 20 行之间进行,则写作“10,20 动作行为”。地址可表示为文本的“行号”,或者用来匹配的“/正则表达式/”,省略定址符时,默认逐行处理全部文本。
fuction 为编辑指令,可以为增删改查等指令:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何内容;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :替换,通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g。
替换担任的分
隔
“/”
,可改用其他字符,如#、&等,便于修改文件路径,
把/bin/bash 替换为/sbin/sh 可以 sed "s/\/bin\/bash/\/sbin\/sh/" /etc/passwd
也可写成
sed "s#/bin/bash#/sbin/sh#" /etc/passwd
基本处理示例:
使用示例:
备注:
使用的 sed 操作规则必须使用’’括起来。