Week6課堂知識點總結 |
作者:Old_Pan 歸檔:學習筆記 2017/10/16
|
目 錄
第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/oldboy touch/oldboy/oldboy{01..10}.txt /oldboy/stu-oldboy{01..10}.txt oldboy oldboy.txt find/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<<EOF alias grep='grep --color=auto' alias egrep='egrep --color=auto' EOF source /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.txt 1 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.com
1.4.6.3 空行 ^$ 這一行中沒有任何符號
[root@oldboyedu41-nb oldboy]# grep -n"^$" oldboy.txt 3: 8: [root@oldboyedu41-nb oldboy]# cat -noldboy.txt 1 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!
#排除空行
[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.txt
1.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
[root@oldboyedu41-nb oldboy]# grep"0*" 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! [root@oldboyedu41-nb oldboy]# grep -o"0*" oldboy.txt 000 00000
連續出現
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.com
1.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
[root@oldboyedu-41-01 tmp]# grep"[a-Z]" oldboy.txt
[root@Centos6p9m1 oldboy]# grep"^[m|n|o].*[m|g]$" oldboy.txt [root@Centos6p9m1 oldboy]# grep"^[m,n,o].*[m,g]$" oldboy.txt [root@oldboyedu41-nb oldboy]# #在正則中括號中 特殊符號(正則表達式符號) 一般都沒有特殊含義 [root@oldboyedu41-nb oldboy]# #grep"\.$" [root@oldboyedu41-nb oldboy]# #grep"[.]$"
問題:- 表示非特殊符號 在這裏怎麼是從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!
[root@Gloria ~]# grep"[^m^n^o].*[m$g$]" oldboy.txt
[^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>
[root@oldboyedu41-nb oldboy]# echo123456|sed -r 's#(.*)#\1#g' 123456 [root@oldboyedu41-nb oldboy]# echo123456|sed -r 's#(.*)#@@@\1@@@@#g' @@@123456@@@@ [root@oldboyedu41-nb oldboy]# echo123456|sed -r 's#(.*)#<\1>#g' <123456> [root@oldboyedu41-nb oldboy]# [root@oldboyedu41-nb oldboy]# echo123456|sed -r 's#..(.)...#\1#g' 3 [root@oldboyedu41-nb oldboy]# echo123456|sed -r 's#..(.)...#\2#g' sed: -e expression #1, char 15: invalidreference \2 on `s' command's RHS [root@oldboyedu41-nb oldboy]# echo123456|sed -r 's#(.).(.)...#\2#g' 3
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 goood
1.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.com Dr.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.200
2.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.200
2.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.200
2.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}' 1
2.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.130
2.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