12.26&12.27html
正則表達式mysql
cat >>/etc/profile<<EOFlinux
alias grep='grep --color=auto'正則表達式
alias egrep='egrep --color=auto'sql
EOFexpress
source /etc/profiletcp
alias grep egrep ide
^ $ . * [] [^] \學習
| + () {} ?spa
做用 支持的命令
通配符: 查找文件名 Linux大部分命令都支持 以.txt結尾的文件
正則: 在文件中過濾內容 sed,grep,awk Python Java
1.正則表達式按照行爲單位處理
2.正則神坑-中文符號
‘’ 「」 () 。 * …… ¥ | {} 【】
'' "" () . * ^ $ | {} []
3.區分大小寫
環境
cat oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 49000448
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
grep ‘^m’ /oldboy.txt 以m開頭的行
grep ‘m$’ /oldboy.txt
cat -A 顯示出文件中的特殊標記 行尾 $標記
grep -v '^$' oldboy.txt 排除文件中的空行
grep -n 顯示行號
grep ‘.’ oldboy.txt
grep -o 顯示命令執行過程,顯示grep命令每一次找到了什麼
空格也執行一次命令
grep ‘0*’ oldboy.txt
坑:過濾的目標出現了0次的時候,會顯示整個文件的內容
貪婪性 ( . * .* + ? )
1. .*全部符號 任何符號 連續出現的字符 有多少匹配多少
2. 正則表達 全部符號 或 連續出現 會表現出貪婪性
3. 匹配到最後一個符合的條件---------(貪婪性)
找出以m開頭並以m結尾的行 ---- 而且
[root@oldboy oldboy]# grep '^m.*m$' oldboy.txt
my blog is http://oldboy.blog.51cto.com
找出文件中以.結尾的行
[root@oldboy log]# grep '\.$' /oldboy/oldboy.txt
I teach linux.
not 4900000448.
tr命令 1.不能直接修改文件內容
2.一對一替換
特色 3.沒法直接讀取文件內容 接 <
\n =====回車
例:把文件中的空格替換爲回車
[root@oldboy oldboy]# tr '\n' ' ' oldboy.txt 回車替換爲空格
tr: extra operand `oldboy.txt' tr不能直接讀取文件
Try `tr --help' for more information. 必須加<輸入重定向符號
[root@oldboy oldboy]# tr '\n' ' ' <oldboy.txt
I am oldboy teacher! I teach linux. I like badminton ball ,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com my qq is 49000448 not 4900000448. my god ,i am not oldbey,but OLDBOY!
報錯:tr命令沒法直接讀取文件 必須加< 不能修改文件內容
替換:把123替換爲abc sed 閹割版
[root@oldboy oldboy]# echo 123123|tr '123' 'abc'
abcabc
一對一替換
[root@oldboy oldboy]# echo 12332|tr '123' 'abc'
abccb
單個字符分割,以」或」鏈接
找出以小寫字母開頭並以.或!結尾的行
[root@oldboy oldboy]# grep '^[a-z].*[.!]$' oldboy.txt
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
找出文件中不是以m或n開頭的行
[root@oldboy oldboy]# grep '^[^mn]' oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
our size is http://blog.oldboyedu.com
grep/egrep ‘[a-Z]’
grep -E ===egrep
[root@oldboy log]# egrep '0+' /oldboy/oldboy.txt
my qq is 49000448
not 4900000448.
+小結:
1.前一個字符連續出現1次或一次以上
2.+通常與[]進行配合
例題:
lidao.×××
cat id.txt
湯 610702199107053598
鄒 371481199403259478
莫 52020319810613433X
韓 460106199111137270
榮 530124197504135438
榮 oldboy
榮 babygirl
榮 530124197504135438
阮 360702197902169951
翁 331002198504132813
任 621223198708245176
姜 370602198507189574
霍 320904198403048179
如何判斷用戶的×××號碼是否正確?
特殊符號幫助咱們處理文件====正則表達式
在文件中過濾出你想要的或不想要的內容
解答: egrep '[0-9X]+' id.txt
[root@oldboy log]# egrep '[0-9X]+' /oldboy/id.txt
湯 610702199107053598
鄒 371481199403259478
找出3306或1521端口服務
[root@oldboy log]# egrep '3306|1521' /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
找出文件中包含oldboy或oldbey的行
[root@oldboy log]# egrep 'oldb(o|e)y' /oldboy/oldboy.txt
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my god ,i am not oldbey,but OLDBOY!
使輸出結果爲 12<34>56 這個就叫後向引用
[root@oldboy oldboy]# echo 123456 |sed -r 's#(12)(34)(56)#\1<\2>\3#g'
12<34>56 \2對應前面第幾個
12.27
0{n,m} 前一個字符至少連續出現n次,最多連續出現了m次
0{n} 前一個字符連續出現n次
0{n,} 前一個字符至少連續出現n次
0{,m} 前一個字符最多連續出現了m次
例:查找文本中0最少出現3次最多出現4次的行
[root@oldboy oldboy]# egrep '0{3,4}' oldboy.txt
my qq is 49000448
not 4900000448.
例:查找文本中0出現3次的行
[root@oldboy oldboy]# egrep '0{3}' oldboy.txt
my qq is 49000448
not 4900000448.
找出0連續出現了三次的行(正好三次)
[root@oldboy oldboy]# egrep '^.*[^0]0{3}[^0].*$' oldboy.txt
my qq is 49000448
錯誤:加號在花括號前面,花括號失效
[root@oldboy oldboy]# cat good.txt
good
gd
god
goood
[root@oldboy oldboy]# egrep 'go?d' good.txt
gd
god
1. +通常與[]進行配合 把各類連續的東西取出來
2. | 或
3. () 一個總體 後向引用---sed
4. {} 0{n,m} 前一個字符至少連續出現了n次,最多連續出現了m次
5. ? 前一個字符出現了零次或一次
基礎正則: grep/sed/awk
擴展正則: egrep/sed -r/awk
[root@oldboy oldboy]# grep 'go\+d' good.txt
good
god \只能轉義對單個字符 雞肋
goood
補充:瞭解
1. grep/egrep -o和顏色是grep獨有
2. 一步步分解
man grep
info sed/awk/grep
https://www.gnu.org/software/grep/manual/grep.html