文章目錄
- 學習目標
- 一、什么是三劍客
- 1.三劍客grep
- 2.三劍客sed
- 3.三劍客awk
- 4.正則過濾例子1
- 5.正則過濾例子2
- 總結
學習目標
1.學會使用 grep
2.學會使用 sed
3.學會使用 awk
4.學會使用正則表達式
一、什么是三劍客
正則三劍客:grep sed awk
1.三劍客grep
# 擅長過濾
# grep參數-n 行號-c 對結果行計數-i 不區分大小寫-v 反向搜索,取反-w 精準匹配-o 只顯示匹配的結果-A1 同時打印搜索結果行的后一行-B3 同時打印搜索結果行的前三行-C2 同時打印搜索結果行的上下各兩行-E 擴展正則表達式
2.三劍客sed
# 擅長修改
用法:sed [-nri] [動作] 目標文本文件
選項與參數:-n:使用安靜(silent)模式。在一般sed的用法中,所有來自STDIN的數據一般都會被列出到終端上。但如果加上-n參數后,則只有經過sed特殊處理的那一行(或者動作)才會被列出來。-r:sed的動作支持的是延伸型正規表示法的語法(默認是基礎正規表示法語法)-i:直接修改讀取的文件內容,而不是輸出到終端。動作說明:[n1[,n2]]funcitonn1,n2一般表示為行號function:a:指定行后面插入一行d:刪除i:指定行前面插入一行p:打印,#一般和前面的-n參數一起用s:替換 需要I忽略大小寫,全局替換需要g
3.三劍客awk
#擅長取列
用法:取列eg1:取列awk '{print $1}' 1.txtawk '{print $1,$7}' /etc/passwdeg2:指定分割符awk -F ":" '{print $1,$7}' /etc/passwd#[ /]+空格 和斜杠/為分隔符,+代表合并連續的分隔符awk -F "[ /]+" '{print $2}' 1.txteg3:拼湊指定文本,雙引號之間原樣輸出awk -F ":" '{print $1":123:"$7}' /etc/passwdeg4:過濾文本awk -F "[ /]+" '$2~/^47/' 1.txteg5:根據行號篩選內容awk 'NR<=3{print $0}' 1.txt # 大于> 小于< 等于== 大于等于>= 小于等于<=awk:$0代表整行,$1代表第一列,$2代表第二列...第十列$10最后一列$NFNR代表行號
過濾文本
文本拼湊
4.正則過濾例子1
1.什么是正則表達式
簡單的說,正則表達式就是一套處理大量的字符串而定義的規則和方法。
例如:假設 @代表12345
通過正則表達式這些特殊符號,我們可以快速的過濾、替換需要的內容。
linux正則一般以行為單位處理的。
2.正則表達式
1) ^word 表示搜索以word開頭的內容
2) word$ 表示搜索以word結尾的內容
3) ^$ 表示空行,不是空格
4) . 代表且只能代表任意一個字符
5) \ 轉義字符,讓有著特殊身份意義的字符,脫掉馬甲,還原原型
6) * 重復0個或多個前面的一個字符。不代表所有了
7) .* 匹配所有的字符。 ^.* 任意多個字符開頭
8) [abc] 匹配字符集內任意一個字符[a-z]
9) [^abc] ^在中括號里面表示非,不包含a或b或c
10) {n,m} 重復n到m次,前一個字符
舉個例子:
再舉一個例子:
規則沒有寫好導致沒有下載到大部分圖片,
但是基本步驟就是這樣,重點是規則寫好匹配得上才能下載大部分圖片。
grep -Eo 'https[a-z.:/\-]+img.com.cn/t_s[0-9a-zA-Z/_-]+\.jpg'
url.txt |awk '{print "wget "$1}' |/bin/bash
查IP
5.正則過濾例子2
正則表達式練習
1.從phpone.txt文本中的手機號碼過濾出所有聯通130/131/132號段的手機號碼2.找出手機靚號(如帶連續3個以上連續相同數字的,如有8888或者9999)grep -E '^1[0-9]{10}$' phone.txt|grep -E'000+|111+|222+|333+|444+|555+|666+|777+|888+|999'grep -E '^1[0-9]{10}$' phone.txt|grep -E '000+$|111+$|222+$|333+$|444+$|555+$|666+$|777+$|888+$|999+$'
3.將下列文本中的手機號碼提取出來
http://so.qqdna.com/nub/15912345678.html
http://so.qqdna.com/nub/13711223344.html
http://so.qqdna.com/nub/13511223344.html
http://so.qqdna.com/nub/13311223344.html
http://so.qqdna.com/nub/13911223344.html
http://so.qqdna.com/nub/13312345678.html
4.找出弱密碼,密碼長度低于8或者只有純數字或者純字母的為弱密碼
答案:grep -E '^.{1,7}$|^[0-9]+$|^[a-z]+$|^[A-Z]+$' mima.txt
5.過濾出正確的郵箱地址
答案:grep -E '^[0-9a-zA-Z]+@.*\.[a-z]+$' mail.txt
6.批量下載頁面上的jpg圖片,給出詳細命令
答案:grep -E 'src="https:[^"]+' tupian.txt grep -Eo 'src="https:[^"]+' tupian.txt |grep 'jpg$'|sed 's#src="##g'grep -Eo 'src="https:[^"]+' tupian.txt |grep -E 'jpg$|png$'|sed 's#src="##g'grep -Eo 'src="https:[^"]+' tupian.txt |grep -E 'jpg$|png$'|sed 's#src="##g' |awk '{print "wget "$1}' |/bin/bashgrep -Eo 'src="https:[^"]+' tupian.txt |grep -E '\.jpg|\.png'|sed 's#src="##g' |awk '{print "wget "$1}' |/bin/bashgrep -Eo 'src="https:[^"]+' curl "https://desk.zol.com.cn/fengjing/1920x1080/" |grep -E 'jpg$|png$'|sed 's#src="##g' |awk '{print "wget "$1}' |/bin/bash
菜鳥教程-正則表達式
總結
以上就是今天要講的內容,三劍客和正則表達式要學習的知識點非常多,而且這一塊知識比較繞,容易讓人感到云里霧里的,要把每句的意思理解了才能運用自如,還遠遠不夠,需要經常反復練習。