腳本目的:正則表達式
綜合案例:過濾用戶名稱以及對應的密碼
-找到使用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