sed 选项 条件  指令  文件
前置指令 |  sed  选项  条件 指令 文件
选项  -n  屏蔽默认输出  -r 支持扩展正则  -i修改源文件  -e可以执行多条sed语句  -f选项后边可以接sed脚本的文件名
指令p输出匹配行 d删除匹配行 s替换  s/正则/替换内容/g(全局匹配)  i在指定行前插入一行  a在指定行后边添加一行  c行替换
条件  行号  /字符串/被匹配到的每一行  空地址全文处理  10,20(十到二十行)  10,+5(第十行及向下五行) 10p;15p输出第十行和第十五行
步长 1~2 表示1,3,5,7,9行  2~2两个步长 表示2,4,6,8,10偶数行
tail -5  /etc/passwd  > user
cat user  | sed -n '2p'
cat user  | sed -n  '/^root/p'
cat user  | sed -n  '/root/p'
cat user  | sed -nr  '/root|bin/p'   #sed使用扩展正则必须加r
cat user  | sed  -n   '$p'    #匹配最后一行
cat user  | sed  -n   '='    #查看行号
cat user  | sed  -n   '/root/='   #查看匹配到root这一行的行号
cat user  | sed  -n   '2!p'     #输出除了第二行的内容
# 以上指令去掉-n,将p改为d即为删除
cat user  | sed  -i  '2d'  删除第二行并写入文档
cat user  | sed  's/root/abc/'  #替换每一行第一个root
cat user  | sed  's/root/abc/2'  #替换每一行第二个root
cat user  | sed   's/root/abc/g' #将所有root都替换为abc
cat user  | sed   'c 600'   #将所有行替换为600
cat user  | sed   '2c 600'  #替换第二行为600

编写脚本,搭建网站,要用82端口开启,默认主页内容为sed-test~~ (在ubuntu中httpd叫做apache)

#!/bin/bash
yum -y remove httpd  &>  /dev/null
rm -rf /etc/httpd
yum -y install httpd  &>  /dev/null
sed  -i 's/^ Listen 80/Listen 82/' /etc/httpd/conf/httpd.conf
echo sed-test~~~ > /etc/www/html/index.html
setenforce 0  #关闭 SElinux
systemctl  start  httpd
systemctl  enable httpd
#测试一下
curl  192.168.245.130.82
#将/bin/bash修改为/sbin/sh
cat user  |  sed 's/\/bin\/bash/\/sbin\/sh/'
更换替换符   将///修改为一样的符号就行
cat  /etc/user | grep "bash$" |sed 's?/bin/bash?/sbin/sh?'
 #查找使用bash的用户
cat  /etc/passwd |  grep  "bash$" | sed  's/:.*//'
#列出这些用户的密码  在/etc/shadow
sed -n '/bash$/s/:.*//p'      #p的作用输出匹配行
pass=grep "^root" /etc/shadow
pass=${pass#*:}
pass=${pass%%:*}
#编写脚本:
#!/bin/bash
passwd=$(sed -n '/bash$/s/:.*//p' /etc/passwd)
for i in $passwd
do
  pass=$(grep "^$i" /etc/pswwd)
  pass=${pass#*:}
  pass=${pass%%:*}
  echo "用户$i的密码是$pass"
done

匹配ip地址

(25[0-5]\.|2[0-4][0-9]\.|1?[0-9]?[0-9]\.){3}(25[0-5]\.|2?[0-4]?[0-9]\.|1?[0-9]?[0-9])