# sed [-nefr] [动作] 基本格式是这样的。
其中的参数:
-n :使用安静模式,在一般的sed的用户中,所有来自stdin 的数据一本都会被列出在屏幕中,但如果加上-n 后,则只有经过sed 特殊处理的那一行才会被列出来。
-e:直接在命令行模式上进行sed的动作编辑。
-f :直接将sed的动作写在一个文件内,- f filename 则可以执行filename 内的sed 动作。
-r :sed的动作支持的是扩展型正在表达式的语法。
-i :直接修改读取的文件内容,而不是有屏幕输出。
动作说明:[n1,[n2]] function
n1 ,n2 :不见得存在,一般代表选择进行的动作的行数。
function:
a: 新增,a 的后面可以接字符串,而这些字符串会在新的一行出现。
c:替换,c的后面可以接字符串,这些字符串可以替换n1,n2 之间的行。
d: 删除,因为是删除,所有后面不接任何参数。
i :插入,i的后面可以直接接字符串,字符串会出现在新的一行。
p: 打印,也就是将某个选择的数据打印出来。 通常p会与参数-n 一起使用。
s: 替换,可以直接进行替换工作。通常这个s的动作可以搭配,例如: 1,20s/old/new/g
以行单位删除或新增:例如
nl /etc/passwd | sed '2,5d'
nl /etc/passwd | sed '2a drink tea'
在第二行前加上一行drink tea :nl /etc/passwd | sed '2i drink tea'
新增很多行 直接一点要 \ 来进行新增。
在第二行后加上多行字符串 :nl /etc/passwd | sed '2i drink tea..... \> drink teer ?' 新增 drink tea..... 和 drink teer ?
以行为单位替换:
nl /etc/passwd |sed ' 2,5c No 2-5 number' 2-5行的内容替换成 N0 2-5 number
想列出那几行: nl /etc/passwd |sed -n '5,7p' 5到7行
sed 's /要替换的字符串 /新的字符串/g'
cat /etc/man.config |grep 'man'
cat /etc/man.config |grep 'man' |sed 's /#.*$//g'
cat /etc/man.config |grep 'man' |sed 's /#.*$//g' |\ >sed '/^$/d' 删除空格