脚本目的:正则表达式
综合案例:过滤用户名称以及对应的密码
-找到使用bash做登陆shell的本地用户
-列出这些用户的shadow密码记录
-按每行"用户名--->,密码登陆" 保存结果shell
[root@IBM RegularExpress]# cat input2.sh
#!/bin/bash
user=`sed -n '\#/bin/bash#p' /etc/passwd |cut -d : -f 1`
for i in $user
do
passwd=`sed -n "/$i/ p" /etc/shadow |cut -d : -f 2`
for j in $passwd
do
echo "$i---->$j" >>result.txt
donebash
doneapp
——————————————————————————————————————.net
sed的难点在于和正则表达式相结合get
SED的操做指令:input
1.增长
#sed '2a XXX' 文件 #追加append 在第二行的后面插入xxx
#sed '2i YYY' 文件 #插入insert 在第二行的前面插入xxx
2.删除
#sed '2d' 文件 #删除第2行
#sed '/IPADDR/d' 文件
3.修改
#sed '2c XXX' 文件 #change行,替换一整行
#sed 's/旧/新/' 文件 #替换,替换1个 每行出现的第一个关键字
#sed 's/旧/新/g' 文件 #替换全部
#sed 's/old//' 文件 把老的替换成空就是删除
替换符能够是任何符号和数字 如: #,不必定是/class
4,查找登录
.行号
#sed -n '1p' 文件
#sed -n '3p' 文件
#sed -n '1~2p' 文件
#sed -n '1,2p' 文件
#sed -n '1,+3p' 文件 1和随后的3行打印
.正则
#sed -n '/IPADDR/p' 文件
#sed -n '\cIPADDRc' 文件
#sed '/\/bin\/bash/p' 文件
#sed '\c/bin/bashcp' 文件
#sed '\#/bin/bash#p' 文件
#sed '$p' 文件扩展
#行号处用正则替代
5,正则的保留
1.基本正则 \(abc\)t\1u\1i\1o\1 \(abc\)t\(cba\)u\1i\2o\2 2.扩展正则 (abc)t\1u\1i\1o\1 (abc)t(cba)u\1i\2o\2