1.提示
默認 grep sed不能直接識別
grep 提升自己? -- egrep/grep -E?
sed? 提升自己? -- sed -r?? 主要用來自動編輯一個或多個文件、簡化對文件的反復操作、編寫轉換程序等
還有就是一種方法把需要用到的拓展正則用撬棍\打回到基本的正則表達式
2.+號符號( 匹配前一個字符連續(xù)出現(xiàn)了1次或者多次 )
my qq num is 49000448.
not 4900000448.
egrep "0+" oldboy_test.txt
grep "0\+" oldboy_test.txt
結果: 000
? ? 00000
找出身份證信息輸入錯誤的內(nèi)容
張三 110105199004067631
李四? 104105199004067631
王五? 104105199004067631
趙六 oldboy
grep -Ev "[0-9]+" oldboy_test02.txt
趙六 oldboy
3.豎線符號|
用于匹配多個信息
grep -E "oldboy|oldbey" oldboy_test.txt
4. 括號符號() 看作整體
作用1. 指定信息進行整體匹配
grep "oldb[oe]y" oldboy_test.txt
grep -E "oldb(oe)y" oldboy_test.txt
作用2. 進行后項引用前項使用: sed命令替換功能
echo oldboy{01..10}|xargs -n1
? ? oldboy01
? ? oldboy02
? ? oldboy03
? ? oldboy04
? ? oldboy05
? ? oldboy06
? ? oldboy07
? ? oldboy08
? ? oldboy09
? ? oldboy10
echo oldboy{01..10}|xargs -n1|sed -r 's#(.*)#useradd \1#g' | bash
# \1代表后項引用前項 xargs -n1代表換行顯示 -r代表拓展命令
把每一行的內(nèi)容都放在(.*)中? 最后要放到bash解釋器中 不然只會輸出 不會執(zhí)行命令
面試題: 批量創(chuàng)建用戶 oldboy01..oldboy10,并給每個用戶設置密碼信息,默認初始化密碼(123456)
seq -w 10|sed -r 's#(.*)#useradd oldboy\1;echo 123456|passwd --stdin oldboy\1#g?
stdin標準輸入
將輸出的信息
echo 123456 ==> 轉換為 <123456>進行顯示
echo 123456|sed -r 's#(.*)#<\1>#g'
sed -r 's#([1-6]+)#<\1>#g'
echo 123456 ==> 轉換為 <12><34><56>進行顯示
[root@oldboyedu ~]# echo 123456|sed -r "s#(12)(34)(56)#<\1><\2><\3>#g"
? ? <12><34><56>
[root@oldboyedu ~]# echo 123456|sed -r "s#(12)(34)(56)#<\1><><\3>#g"
? ? <12><><56>?
[root@oldboyedu ~]# echo 123456|sed -r "s#(12)(34)(56)#<\1><\3><\3>#g"
? ? <12><56><56>
[root@oldboyedu ~]# echo 123456|sed -r "s#(..)(..)(..)#<\1><\2><\3>#g"
? ? <12><34><56>
5.括號符號{} (可以指定字符連續(xù)匹配的次數(shù))
第一種情況: x{n,m} 表示前一個字符至少連續(xù)出現(xiàn)n次,最多出現(xiàn)m次
grep -E "0{2,3}" oldboy_test.txt
grep -E "0{2,4}" oldboy_test.txt -o
第二種情況: x{n} 表示前一個字符正好連續(xù)出現(xiàn)了n次
grep -E "0{2}" oldboy_test.txt
第三種情況: x{n,} 表示前一個字符至少連續(xù)出現(xiàn)n次,最多出現(xiàn)多少次不限
grep -E "0{2,}" oldboy_test.txt
?第四種情況: x{,m} 表示前一個字符至少連續(xù)出現(xiàn)0次,最多出現(xiàn)m次
grep -E "0{,2}" oldboy_test.txt
6.? 問號符號 ?
? 定義匹配前一個字符出現(xiàn)0或者1次
7. 拓展的正則表達式總結
* 匹配前一個字符出現(xiàn)0次或者多次
+? 匹配前一個字符出現(xiàn)1次或者多次
{} 匹配前一個字符指定出現(xiàn)多少次,至少0次
?? 匹配前一個字符出現(xiàn)0次或者1次
8.利用ip address show eth0只把IP地址信息顯示出來
ip a s eth0|egrep "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+" -o|head -1
10.0.0.200
