sed流式编辑器,非交互式对文档增删改查
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])
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员fancy
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果