sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。
调用sed命令有两种形式:
-
sed [options] 'command' file(s)
-
sed [options] -f scriptfile file(s)
直接上例子:
sed -e 's/root/shrek/g' /etc/passwd 替换passwd 文件中root成shrek(-e 允许多台编辑,s替换,g表示替换多个,负责只替换每行第一个)
sed -e '/bash/d' /etc/passwd 删除passwd 中包含bash的行
sed -n -e '/\<shrek\>/p' /etc/passwd 打印passwd中包含shrek单词的行,和-n配合使用(-n取消默认输出)
sed -n -e '/\<shrek\>/s/bash/nologin/p' /etc/passwd 把文件中包含shrek的行中得bash单词替换成nologin并打印
sed -e '/\<shrek\>/s/bash/nologin/g' /etc/passwd >/tmp/a
cp /tmp/a /etc/passwd 把文件中包含shrek的行中所有bash单词替换成nologin并真正修改passwd
sed -e ''/^#/d' -e '/^$/' /etc/squid/squid.conf 删除文件中以#开头的行以及空格行
sed替换: sed 's/{old value}/{new value}'
多次替换: sed -e 's /mike/todd' -e 's/good/better'
sed 's /mike/todd;s/good/better'
地址是sed 定义编辑域的,没有默认是全文
地址可以是number,first~step,/regexp
$ sed '2d' example-----删除example文件的第二行。
$ sed '2,10d' example-----删除example文件的第二行到10行。
$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
$ sed '$d' example-----删除example文件的最后一行。
$ sed '1~2d' example-----删除example文件的第一行开始,步长为2的行。
$ sed '/test/d' example-----删除example文件所有包含test的行。
sed -f sss /etc/passwd
sss中得内容
s/bash/nologin
s/root/shrek
相当于sed -e 's/bash/nologin' -e 's/root/shrek' /etc/passwd
还有一种方式,写一个如下的脚本ss1
#!/bin/sed -f
s/bash/nologin
s/root/shrek
执行./ss1 /etc/passwd也能达到同样的效果
------------------运行info sed了解更多