老男孩Linux运维第41期20171016第六周学习重点课堂记录
? ? ? Week6課堂知識點總結 |
? 作者:Old_Pan 歸檔:學習筆記 2017/10/16 ? |
目? 錄
第1章正則表達式與通配符... 2
1.1 特殊符號... 2
1.2 通配符... 3
1.3 {} 生成序列... 4
1.4 正則表達式... 5
1.4.1 什么是正則... 5
1.4.2 使用正則的時候注意事項... 5
1.4.3 正則表達式與通配符區別... 6
1.4.4 正則表達式分類... 6
1.4.5 準備測試環境... 6
1.4.6 基礎正則... 6
1.4.7 擴展正則ERE. 13
1.4.8 正則表達式總結... 21
1.4.9 基礎正則與擴展正則區別:21
第2章練習題... 21
2.1 刪除掉文件中的空行... 21
2.2 取出eth0網卡的ip地址... 22
2.2.1 方法1:awk 3個管道... 22
2.2.2 方法2:awk 2個管道... 23
2.2.3 方法3:awk 1個管道... 23
2.2.4 方法4:awk 1個管道... 23
2.2.5 方法5:grep 正則... 24
2.3 取出文件的數字權限 644 或 0644. 25
?
?
?
?
?
?
第1章 正則表達式與通配符
1.1?特殊符號
?
特殊符號 | 作用 |
單引號'' | 對括號中的內容不作任何解析,所見即所得,吃啥吐啥 |
雙引號"" | 和單引號類似,但是特殊符號會被解析 運行 $ $() `` ! |
反引號`` | === $() 先運行里面的命令,然后把顯示到屏幕上的內容留下.. |
# | 表示注釋以及root用戶命令提示符 |
$ | 1.取變量里面的內容,例:$LANG、$PATH 2.普通用戶的命令提示符 ? 3.sed -n '$p' oldboy.txt 4.awk? ?$1 $2? $NF 取某一列 5.NR----number of record(行號)? |
! | 1.使用運行歷史命令history,例:!n,n是第幾條歷史命令 2.find awk表示取反、非 |
* | 通配符,表示匹配一切 |
&& | 前一個命令運行成功,再運行后面的命令,例:ifdown eth0 && ifup eth0 |
|| | 前一個命令運行失敗,再運行后面的命令 |
| | 管道 |
? | 通配符,表示匹配任意一個字符 |
\ | 1.轉義符號 2.臨時取消別名 |
?
?
?
1.2?通配符
通配符作用:用來匹配文件名
?
* 所有、任何東西
找出以 *.txt*.log
ls -l *.txt *.log?
?
找出/oldboy 目錄中 文件名中包含oldboy的文件
??????mkdir?-p/oldboytouch/oldboy/oldboy{01..10}.txt?/oldboy/stu-oldboy{01..10}.txt??oldboy?oldboy.txtfind/oldboy/??-name?*oldboy*1.3?{} 生成序列
?#生成序列
?????echo {a..z}
?????echo {1..10}
?????echo {01..10}
?????echo {001..10}
?????echo {01..10}
?????echo {01..100}
?
?#指定每次變化多少
[root@oldboyedu41-1?tmp]#?echo?{01..10..2} 01?03?05?07?09 [root@oldboyedu41-1?tmp]#?echo?{a..z..2} a?c?e?g?i?k?m?o?q?s?u?w?y [root@oldboyedu41-1?tmp]#?echo?stu{01,05,10} stu01?stu05?stu10?#通過{}對某個文件進行備份
[root@oldboyedu41-nb?oldboy]#?echo?A{B,C} AB?AC [root@oldboyedu41-nb?oldboy]#?echo?A{,C} A?AC [root@oldboyedu41-nb?oldboy]# [root@oldboyedu41-nb?oldboy]#?echo?oldboy.txt{,C} oldboy.txt?oldboy.txtC [root@oldboyedu41-nb?oldboy]#?echo?oldboy.txt{,.bak}oldboy.txt?oldboy.txt.bak [root@oldboyedu41-nb?oldboy]#?touch?oldboy.txt [root@oldboyedu41-nb?oldboy]#?cp?oldboy.txt{,.bak} [root@oldboyedu41-nb?oldboy]#?#cp?oldboy.txt{,.bak} [root@oldboyedu41-nb?oldboy]#?#cp?oldboy.txt?oldboy.txt.bak [root@oldboyedu41-nb?oldboy]#?echo?oldboy.txt{,.bak} oldboy.txt?oldboy.txt.bak?
1.4 正則表達式
1.4.1 什么是正則
又稱規則表達式。(英語:RegularExpression,在代碼中常簡寫為regex、regexp或RE),計算機科學的一個概念。正則表通常被用來檢索、替換那些符合某個模式(規則)的文本。
創建試驗環境:
cat?>?test.txt?<<EOF oldboy?230xxxxxxxxxxxxxxxxxxx oldboy01 oldboy43.txt oldboy-lidao.txt oldboybaby oldbabay EOF?
找出文件中包含數字的行
grep "[0-9]" test.txt
通過一種符合表示不同的數字 字母 ====== 正則表達式(特殊符號 ^ $ + . * 表示各種不同的字符)
???
1.4.2 使用正則的時候注意事項
?????1# 正則表達式是高級貨色linux三劍客 grep sed awk
?????2# 正則表達式匹配按照行為單位的
?????grep "^oldboy" oldboy.txt
?????3# 使用的時候注意 使用英文符號,??? 禁止使用中文符號
?????4# 給grep/egrep 加上一個別名可以增加顏色區分顯示結果
?????
?????cat?>>/etc/profile<<EOFalias?grep='grep?--color=auto'alias?egrep='egrep?--color=auto'EOFsource?/etc/profile[root@oldboyedu41-nb?oldboy]#?alias?grep?egrep?alias?grep='grep?--color=auto'alias?egrep='egrep?--color=auto'1.4.3 正則表達式與通配符區別
?????1# 正則表達式高級貨色????????查找文件內容 文字符號 grep sed awk 三劍客支持? python java
?????2# 通配符????????查找文件名字大部分linux命令都可以使用 通配符 *.txt? *.log
?????
1.4.4 正則表達式分類
1、?基礎正則? ^? $?.? *? []???basic???? regular? expression?BRE
2、擴展正則? +? |? (){} ?????? extended? regular?expression? ERE
1.4.5 準備測試環境
[root@oldboyedu41-nb?oldboy]#?cat?-noldboy.txt1??I?am?oldboy?teacher!2??I?teach?linux.3??4??I?like?badminton?ball?,billiardball?and?chinese?chess!5??my?blog?ishttp://oldboy.blog.51cto.com?6??our?site?ishttp://www.etiantian.org?7??my?qq?num?is?49000448.8??9??not?4900000448.10??my?god?,i?am?not?oldbey,butOLDBOY!1.4.6 基礎正則
1.4.6.1??^? 表示以....開頭的行
[root@oldboyedu41-nb?oldboy]#?grep"^m"?oldboy.txt my?blog?is?http://oldboy.blog.51cto.com? my?qq?num?is?49000448. my?god?,i?am?not?oldbey,but?OLDBOY!1.4.6.2??$? 以....結尾的行
cat -A可以在文件每一行最后加上結尾符$
[root@oldboyedu41-nb?oldboy]#?cat?-Aoldboy.txt I?am?oldboy?teacher!$ I?teach?linux.$ $ I?like?badminton?ball?,billiard?ball?andchinese?chess!$ my?blog?is?http://oldboy.blog.51cto.com$ our?site?is?http://www.etiantian.org$ my?qq?num?is?49000448.$ $ not?4900000448.$ my?god?,i?am?not?oldbey,but?OLDBOY!$ [root@oldboyedu41-nb?oldboy]#?grep"m$"?oldboy.txt my?blog?is?http://oldboy.blog.51cto.com1.4.6.3??空行 ^$ 這一行中沒有任何符號
[root@oldboyedu41-nb?oldboy]#?grep?-n"^$"?oldboy.txt 3: 8: [root@oldboyedu41-nb?oldboy]#?cat?-noldboy.txt1??I?am?oldboy?teacher!2??I?teach?linux.3??4??I?like?badminton?ball?,billiardball?and?chinese?chess!5??my?blog?ishttp://oldboy.blog.51cto.com6??our?site?ishttp://www.etiantian.org7??my?qq?num?is?49000448.8??9??not?4900000448.10??my?god?,i?am?not?oldbey,butOLDBOY!?#排除空行
[root@oldboyedu41-nb?oldboy]#?grep?-v"^$"?oldboy.txt I?am?oldboy?teacher! I?teach?linux. I?like?badminton?ball?,billiard?ball?andchinese?chess! my?blog?is?http://oldboy.blog.51cto.com our?site?is?http://www.etiantian.org my?qq?num?is?49000448. not?4900000448. my?god?,i?am?not?oldbey,but?OLDBOY!1.4.6.4??.(點)? 匹配任意一個字符但不匹配空行
[root@oldboyedu41-nb?oldboy]#?#grep?-o??"."?oldboy.txt [root@oldboyedu41-nb?oldboy]#?#-o?grep命令每次?匹配到了什么 [root@oldboyedu41-nb?oldboy]#?grep?-o??"."?oldboy.txt1.4.6.5??\? 轉義字符 脫掉馬甲 打回原形
#找出文件中oldboy.txt 以.結尾的行?
[root@oldboyedu41-nb?oldboy]#?grep"\.$"?oldboy.txt I?teach?linux. my?qq?num?is?49000448. not?4900000448.???\n? 回車換行??
?????
#^ $?^$? .
#grep -o 顯示grep命令每次找到的內容??????
???
1.4.6.6??* 前一個字符連續出現0次或1次以上?>=0? ?
[root@oldboyedu41-nb?oldboy]#?grep"0"?oldboy.txt my?qq?num?is?49000448. not?4900000448. [root@oldboyedu41-nb?oldboy]#?grep?-o"0"?oldboy.txt 0 0 0 0 0 0 0 0 [root@oldboyedu41-nb?oldboy]#?grep?-on"0"?oldboy.txt 7:0 7:0 7:0 9:0 9:0 9:0 9:0 9:0連續出現
0
0000?
000000???
???
####正則中表示連續出現或所有的時候 ----- 貪婪性
? ?
???#"0*" 為何會把整個文件的內容顯示出來
??? #0連續出現了1次以上?000 00000? 0000000
??? #0連續出現了0次??會把整個文件的內容都顯示出來"0*"? ==== ""
???grep ""? oldboy.txt
????I am oldboy teacher!
????I teach linux.
???
??? Ilike badminton ball ,billiard ball and chinese chess!
???my blog is http://oldboy.blog.51cto.com
???our site is http://www.etiantian.org
???my qq num is 49000448.
???
???not 4900000448.
???my god ,i am not oldbey,but OLDBOY!
?
1.4.6.7??.* 所有任何東西
[root@oldboyedu41-nb?oldboy]#?grep?-n"^.*o"?oldboy.txt 1:I?am?oldboy?teacher! 4:I?like?badminton?ball?,billiard?ball?andchinese?chess! 5:my?blog?is?http://oldboy.blog.51cto.com 6:our?site?is?http://www.etiantian.org 9:not?4900000448. 10:my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#?#????#正則中表示連續出現或所有的時候?-----?貪婪性 [root@oldboyedu41-nb?oldboy]#??????#有多少匹配多少有多少吃多少???????#我要找以m開頭的行 并且 以m結尾的行
[root@oldboyedu41-nb?oldboy]#?##我要找以m開頭的行并且?以m結尾的行 [root@oldboyedu41-nb?oldboy]#?grep"^m"?oldboy.txt my?blog?is?http://oldboy.blog.51cto.com my?qq?num?is?49000448. my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#?grep"^m$"?oldboy.txt [root@oldboyedu41-nb?oldboy]#?#grep"^m什么都可以m$"oldboy.txt [root@oldboyedu41-nb?oldboy]#?grep?"^m什么都可以m$"?oldboy.txt [root@oldboyedu41-nb?oldboy]#?grep"^m.*m$"?oldboy.txt my?blog?is?http://oldboy.blog.51cto.com1.4.6.8??[]?[abc] 表示一個整體相當于是一個符號 表示包含a或者b或者c的行
??????????grep "[abc]"????????oldboy.txt
??????????grep "[a-z]"????????oldboy.txt
??????????grep "[A-Z]"????????oldboy.txt
??????????grep "[a-zA-Z]"?????oldboy.txt
??????????grep "[0-9]"????????oldboy.txt
??????????grep "[a-zA-Z0-9]"??oldboy.txt
???????
練習3:以 m或n或o開頭的 并且以 ?m或g 結尾的行
[root@oldboyedu41-nb?oldboy]#?grep"^[mno]"?oldboy.txt my?blog?is?http://oldboy.blog.51cto.com our?site?is?http://www.etiantian.org my?qq?num?is?49000448. not?4900000448. my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#?grep?"^[mno].*[mg]$"oldboy.txt my?blog?is?http://oldboy.blog.51cto.com our?site?is?http://www.etiantian.org問題:-? 表示非特殊符號? 在這里怎么是從a到z啦?
?
1.4.6.9??[^]?[^abc] 表示一個整體相當于是一個符號 表示包含a或者b或者c的行
?????????????????? 第一個位置 排除
[root@oldboyedu41-nb?oldboy]#?grep"[xlc]"?oldboy.txt I?am?oldboy?teacher! I?teach?linux. I?like?badminton?ball?,billiard?ball?andchinese?chess! my?blog?is?http://oldboy.blog.51cto.com my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#?grep"[^xlc]"?oldboy.txt I?am?oldboy?teacher! I?teach?linux. I?like?badminton?ball?,billiard?ball?andchinese?chess! my?blog?is?http://oldboy.blog.51cto.com our?site?is?http://www.etiantian.org my?qq?num?is?49000448. not?4900000448. my?god?,i?am?not?oldbey,but?OLDBOY![^m^n^o]表示 :?排除m或^或n或o
?
[root@oldboyedu oldboy]# grep"[^m-m$]" oldboy.txt??
???
1.4.6.10??基礎正則表達式小結:
(1)?? .^? $? ^$?.*? [abc]?
(2)?? grep? grep -o ??????????? -o參數把找到的東西顯示出來
?
1.4.7 擴展正則ERE
1.4.7.1??+? 前一個字符連續出現1次或多次 >=1
[root@oldboyedu41-nb?oldboy]#?grep"0+"?oldboy.txt [root@oldboyedu41-nb?oldboy]#?egrep"0+"?oldboy.txt my?qq?num?is?49000448. not?4900000448. [root@oldboyedu41-nb?oldboy]#?#egrep?===grep?-E? [root@oldboyedu41-nb?oldboy]#?egrep"0+"?oldboy.txt?-o 000 00000 [root@oldboyedu41-nb?oldboy]#?#取出文件中連續出現的小寫字母? [root@oldboyedu41-nb?oldboy]#?egrep'[a-z]+'?oldboy.txt I?am?oldboy?teacher! I?teach?linux. I?like?badminton?ball?,billiard?ball?andchinese?chess! my?blog?is?http://oldboy.blog.51cto.com our?site?is?http://www.etiantian.org my?qq?num?is?49000448. not?4900000448. my?god?,i?am?not?oldbey,but?OLDBOY! -----oooo [root@oldboyedu41-nb?oldboy]#?egrep?'[a-z]+'oldboy.txt?-o#連續出現?000000??00000??abcd? [root@oldboyedu41-nb?oldboy]#?egrep"[0-9]"?oldboy.txt my?blog?is?http://oldboy.blog.51cto.com my?qq?num?is?49000448. not?4900000448. [root@oldboyedu41-nb?oldboy]#?egrep"[0-9]"?oldboy.txt?-o 5 1 4 9 0 0 0 4 4 8 4 9 0 0 0 0 0 4 4 8 [root@oldboyedu41-nb?oldboy]#? [root@oldboyedu41-nb?oldboy]#?egrep"[0-9]+"?oldboy.txt? my?blog?is?http://oldboy.blog.51cto.com my?qq?num?is?49000448. not?4900000448. [root@oldboyedu41-nb?oldboy]#?egrep"[0-9]+"?oldboy.txt??-o 51 49000448 4900000448 [root@oldboyedu41-nb?oldboy]#?#+?連續出現的東西?一次性取出來?變為一個整體1.4.7.2??| 表示或者
[root@oldboyedu41-nb?oldboy]#?egrep?'a|b|c'oldboy.txt I?am?oldboy?teacher! I?teach?linux. I?like?badminton?ball?,billiard?ball?andchinese?chess! my?blog?is?http://oldboy.blog.51cto.com our?site?is?http://www.etiantian.org my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#?egrep"[abc]"?oldboy.txt I?am?oldboy?teacher! I?teach?linux. I?like?badminton?ball?,billiard?ball?andchinese?chess! my?blog?is?http://oldboy.blog.51cto.com our?site?is?http://www.etiantian.org my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#? [root@oldboyedu41-nb?oldboy]#?egrep"oldboy|oldbey"?oldboy.txt I?am?oldboy?teacher! my?blog?is?http://oldboy.blog.51cto.com my?god?,i?am?not?oldbey,but?OLDBOY!1.4.7.3??() 的作用:1括號里面的內容相當于是一個整體,先算括號里面的內容;2反向引用(sed)
[root@oldboyedu41-nb?oldboy]#?egrep"oldboy|oldbey"?oldboy.txt I?am?oldboy?teacher! my?blog?is?http://oldboy.blog.51cto.com my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#?egrep"oldbo|ey"?oldboy.txt I?am?oldboy?teacher! my?blog?is?http://oldboy.blog.51cto.com my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#?egrep"oldb(o|e)y"?oldboy.txt I?am?oldboy?teacher! my?blog?is?http://oldboy.blog.51cto.com my?god?,i?am?not?oldbey,but?OLDBOY!2、反向引用(sed) 先保護再使用
[root@oldboyedu41-nb?oldboy]#?echo?123456 123456 [root@oldboyedu41-nb?oldboy]#?echo?123456 123456 [root@oldboyedu41-nb?oldboy]#?echo123456|sed?'s#.*##g'[root@oldboyedu41-nb?oldboy]#?echo?123456|sed's#.*#a#g' a [root@oldboyedu41-nb?oldboy]##<123456> [root@oldboyedu41-nb?oldboy]#?echo123456|sed?-r?'s#(.*)#\1#g' 123456 [root@oldboyedu41-nb?oldboy]#?echo123456|sed?-r?'s#(.*)#<\1>#g' <123456>echo 123456 |sed -r 's#(1)(5)#+\1+3\23#g'
?
[root@instance-kapw2maf?~]#?echo?123456|sed?'s#(.)(.)(.)#<\2>#g'?-r <2><5>1.4.7.4??a{n,m} 0{n,m}?前一個字符連續出現了最少n次,最多出現了m次
???
???*? >=0
???+? >=1
?
[root@oldboyedu41-nb?oldboy]#?egrep'0{1,3}'?oldboy.txt my?qq?num?is?49000448. not?4900000448. [root@oldboyedu41-nb?oldboy]#?egrep'0{1,3}'?oldboy.txt?-o 000 000 00 [root@oldboyedu41-nb?oldboy]#?egrep'0{1,3}'?oldboy.txt?-on 7:000 9:000 9:00 [root@oldboyedu41-nb?oldboy]#?egrep'0{1,3}'?oldboy.txt? [root@oldboyedu41-nb?oldboy]#?egrep?'0{2,4}'oldboy.txt? my?qq?num?is?49000448. not?4900000448. [root@oldboyedu41-nb?oldboy]#?egrep'0{2,4}'?oldboy.txt??-o 000 0000 [root@oldboyedu41-nb?oldboy]#?egrep'0{2,4}'?oldboy.txt??-on 7:000 9:0000#找出文件中連續出現5次到6次的字母 [root@oldboyedu41-nb?oldboy]#?egrep???'[a-z]{5,6}'?oldboy.txt I?am?oldboy?teacher! I?teach?linux. I?like?badminton?ball?,billiard?ball?andchinese?chess! my?blog?is?http://oldboy.blog.51cto.com our?site?is?http://www.etiantian.org my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#?egrep??-w?'[a-z]{5,6}'?oldboy.txt I?am?oldboy?teacher! I?teach?linux. I?like?badminton?ball?,billiard?ball?andchinese?chess! my?blog?is?http://oldboy.blog.51cto.com my?god?,i?am?not?oldbey,but?OLDBOY! [root@oldboyedu41-nb?oldboy]#? [root@oldboyedu41-nb?oldboy]#?egrep??-wo?'[a-z]{5,6}'?oldboy.txt oldboy teach linux chess oldboy oldbey [root@oldboyedu41-nb?oldboy]#?egrep??-won?'[a-z]{5,6}'?oldboy.txt 1:oldboy 2:teach 2:linux 4:chess 5:oldboy 10:oldbey [root@oldboyedu41-nb?oldboy]#?egrep??-woni?'[a-z]{5,6}'?oldboy.txt 1:oldboy 2:teach 2:linux 4:chess 5:oldboy 10:oldbey 10:OLDBOY#-w?grep按照單詞進行匹配(全字符精確匹配/完全匹配)grep?oldboy?test.txt? oldboy? oldboybaby? testoldboy helloldboy?grep?-w?oldboy?test.txt? oldboy[root@oldboyedu oldboy]# egrep '[a-z]+ {1,5}' oldboy.txt -o????????????? 這樣會不會有沖突?
?
#找出文件中的QQ號碼?
[root@oldboyedu41-nb?oldboy]#?##找出文件中的QQ號碼 [root@oldboyedu41-nb?oldboy]#?egrep"[0-9]"?oldboy.txt my?blog?is?http://oldboy.blog.51cto.com my?qq?num?is?49000448. not?4900000448. [root@oldboyedu41-nb?oldboy]#?egrep"[0-9]{5,}"?oldboy.txt my?qq?num?is?49000448. not?4900000448. [root@oldboyedu41-nb?oldboy]#?egrep"[0-9]{5,}"?oldboy.txt?-o 49000448 4900000448#-i 不區分大小寫? aA
#-w 按照單詞進行匹配(全字符精確匹配/完全匹配)
#-n 顯示行號
#-o 顯示grep執行過程? grep正則每次匹配到的內容顯示出來
?
[root@oldboyedu41-nb?oldboy]#?egrep??'[0-9]{5}'?oldboy.txt my?qq?num?is?49000448. not?4900000448. [root@oldboyedu41-nb?oldboy]#?egrep??'[0-9]{5}'?oldboy.txt?-o 49000 49000 00448{}小結:
1. a{n,m}???? 前一個字符連續出現了最少n次,最多出現了m次???????? >=n?? <=m
2. a{n,}??????? 前一個字符連續出現了最少n次????????????????????????????????????????? >=n
3. a{n}???????? 前一個字符連續出現了n次????????????????????????????????????????????????? ==n
? ??
1.4.7.5???? 前一個字符連續出現了0次或1次
[root@oldboyedu41-nb?oldboy]#?egrep"go?d"?a.log? gd??? god[root@oldboyedu41-nb?oldboy]#?egrep"go*d"?a.log? good gd??? god goood1.4.8 正則表達式總結
???? 連續出現(重復)
???????????*??????? >=0
???????????+??????? >=1
??????????????????? 0 1
???????????{n,m}??? >=n? <=m
???? 其他
???????????.??????? 任意一個字符
???????????[abc]?????? 一個整體 相當于是一個字符
???????????????????? [a-z] [0-9] [A-Z]
???????????[^abc]?? 排除??????
??????????? |??????? 或者
???????????()?????? 后向引用?反向引用? 先保護再使用
???????????^
???????????$
1.4.9 基礎正則與擴展正則區別:
?
支持基礎正則 | 支持基礎+擴展正則 |
grep | egrep或者grep -E |
sed | sed ?-r |
awk | |
?
第2章 練習題
2.1 刪除掉文件中的空行
創建測試環境:
cat?>/tmp/blank.txt<<EOF welcome?to?oldboy?linux.welcome?to?join?us.have?fun.lidao.oldboyedu.comDr.Tan? EOF?#grep排除??
?grep-v? "^$"????? blank.txt
?egrep -v "^$|^ +$" ?blank.txt
?egrep -v "^ *$"??? blank.txt
?
?^ *$
?*表示0次的時候就是 ^$
?*表示1次以上的時候就是 ^多個空格$
?
?
?#sed刪除
?sed'找誰干啥' file
?sed'/^ *$/d' blank.txt????
?
?#awk排除 取反
?awk'/^ *$/' blank.txt
?awk'!/^ *$/' blank.txt
?
2.2 取出eth0網卡的ip地址
2.2.1 方法1:awk 3個管道
[root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk'NR==2'inet?addr:10.0.0.200?Bcast:10.0.0.255?Mask:255.255.255.0 [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk'NR==2'|cut?-d?"?"?-f12 addr:10.0.0.200 [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk'NR==2'|awk?'{print?$2}' addr:10.0.0.200 [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk'NR==2'|awk?'{print?$2}'|awk?-F:?'{print?$2}' 10.0.0.2002.2.2 方法2:awk 2個管道
[root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk'NR==2'inet?addr:10.0.0.200?Bcast:10.0.0.255?Mask:255.255.255.0 [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk'NR==2'|awk?-F?"addr:"?'{print?$2}' 10.0.0.200??Bcast:10.0.0.255??Mask:255.255.255.0 [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk'NR==2'|awk?-F?"addr:|Bcast"?'{print?$2}' 10.0.0.200?[root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk'NR==2'|awk?-F?"addr:|??Bcast"'{print?$2}' 10.0.0.2002.2.3 方法3:awk 1個管道
[root@oldboyedu41-nb?oldboy]#?ifconfig?eth0|awk'NR==2{print?$2}' addr:10.0.0.200 [root@oldboyedu41-nb?oldboy]#?#sed?'找誰干啥' [root@oldboyedu41-nb?oldboy]#?#awk?'找誰{干啥}' [root@oldboyedu41-nb?oldboy]#?#找誰===條件 [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0|awk'NR==2{print?$2}' addr:10.0.0.200[root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk-F?"addr:|??Bcast"?'NR==2{print$2}' 10.0.0.2002.2.4 方法4:awk 1個管道
[root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|awk-F?"[:?]+"?'NR==2{print?$4}' 10.0.0.200[root@oldboyedu41-nb?oldboy]#?echo?'#####1@@@@@@2' #####1@@@@@@2 [root@oldboyedu41-nb?oldboy]#?echo'#####1@@@@@@2'|egrep?"[#@]" #####1@@@@@@2 [root@oldboyedu41-nb?oldboy]#?echo'#####1@@@@@@2'|egrep?"[#@]"?-o? # # # # # @ @ @ @ @ @ [root@oldboyedu41-nb?oldboy]#?echo'#####1@@@@@@2'|egrep?"[#@]"? [root@oldboyedu41-nb?oldboy]#?echo'#####1@@@@@@2'|egrep?"[#@]"? #####1@@@@@@2 [root@oldboyedu41-nb?oldboy]#?echo'#####1@@@@@@2'|egrep?"[#@]+"? #####1@@@@@@2 [root@oldboyedu41-nb?oldboy]#?echo'#####1@@@@@@2'|egrep?"[#@]+"?-o ##### @@@@@@ [root@oldboyedu41-nb?oldboy]#?echo'#####1@@@@@@2'|awk?-F?"[@#]+"?'{print?$2}' 12.2.5 方法5:grep 正則
[root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|egrep"[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"?inet?addr:10.0.0.200?Bcast:10.0.0.255?Mask:255.255.255.0 [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|egrep"[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"?-o 10.0.0.200 10.0.0.255 255.255.255.0 [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|egrep"[0-9]+\.{3}[0-9]+"?? [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|egrep"[0-9]+\.{3}[0-9]+"?? [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|egrep"([0-9]+\.){3}[0-9]+"??inet?addr:10.0.0.200?Bcast:10.0.0.255?Mask:255.255.255.0 [root@oldboyedu41-nb?oldboy]#?ifconfig?eth0?|egrep"([0-9]+\.){3}[0-9]+"??-o 10.0.0.200 10.0.0.255 255.255.255.0[root@oldboyedu41-1?tmp]#?ifconfig?eth0?|egrep"([0-9]+\.?){4}"?-o?|head?-1 192.168.56.1302.3 取出文件的數字權限 644 或 0644
[root@oldboyedu41-nb?oldboy]#?stat?/etc/hosts?File:`/etc/hosts'Size:?181?????????Blocks:8??????????IO?Block:?4096???regular?file Device:?803h/2051d??Inode:260126??????Links:?2 Access:?(0644/-rw-r--r--)?Uid:?(????0/????root)??Gid:?(????0/????root) Access:?2017-09-24?00:03:04.019681888?+0800 Modify:?2017-09-10?20:18:34.077204333?+0800 Change:?2017-09-10?20:18:34.096205176?+0800 [root@oldboyedu41-nb?oldboy]#?stat?/etc/hosts?|awk-F?"[(/]"?'NR==4{print?$2?}' 0644總結:
通配符與特殊符號
?????? 通配符號-找文件名
????????????? {}
????????????? *
?????? 特殊符號
????????????? &&
????????????? >>??
????????????? >
????????????? /
????????????? $
????????????? .
????????????? ..
????????????? ~
????????????? |
????????????? #
????????????? !
????????????? &&
????????????? ||
?????? 單引號,雙引號,不加引號區別
????????????? echo'$LANG $(hostname) {1..5}'
????????????? '' 單引號:所見即所得,吃啥吐啥
????????????? "" 雙引號:具有特殊含義的符號 linux對特殊符號進行了解析 執行
????????????? 不加引號:與使用雙引號的時候相同,支持通配符
????????????? `` 反引號 $():運行里面的命令,把命令顯示出來的東西留下了
?
2.正則根據題目
?? 排除文件空行
?? 取出網卡ip地址 grep awk sed(后向引用)
?? 取出權限?????? grep awk sed(后向引用)
??
3.第三關練習題
4.linux權限
permission denied
轉載于:https://blog.51cto.com/oldpan/1976387
總結
以上是生活随笔為你收集整理的老男孩Linux运维第41期20171016第六周学习重点课堂记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue学习笔记(三)
- 下一篇: FPGA+DSP SRIO通信(一)——