劍客起源於唐代傳奇的中國武俠小說中,他們所使用的兵器劍
的地位是至高無上的,一直也是兵器中的王者,符合了劍
在中國古代社會的地位。今天給你們詳細的總結一下linux
系統下的利刃兵器:awk
、sed
、grep
linux
三劍客介紹(grep、sed、awk)
web
是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來正則表達式
# grep 經常使用選項 -c #只輸出匹配行的計數 -i #不區分大小寫 -h #查詢多文件時不顯示文件名 -l #查詢多文件時只輸出包含匹配字符的文件名 -n #顯示匹配行及行號 -s #不顯示不存在或無匹配文本的錯誤信息 -v #顯示不包含匹配文本的全部行 -E #支持擴展的正則表達式 -P #調用perl語法正則
對文本的處理很強大,增、刪、改、查樣樣能作編程
# sed 經常使用選項 -r #在腳本中使用擴展正則表達式 -n #不打印全部行到標準輸出 -i #直接修改文件
能夠理解爲一門編程語言,能夠自定義變量,有條件語句,有循環,有數組,有正則,有函數數組
# awk 經常使用變量 $n #當前記錄的第n個字段,字段間由 FS分隔 $0 #完整的輸入記錄 FNR #同NR,但相對於當前文件 FS #字段分隔符(默認是任何空格) NF #當前記錄中的字段數 NR #當前記錄數 OFS #輸出字段分隔符(默認值是一個空格) ORS #輸出記錄分隔符(默認值是一個換行符) # awk 經常使用字符串函數 sub #匹配記錄中最大、最靠左邊的子字符串的正則表達式,並用替換字符串替換這些字符串 gsub #整個文檔中進行匹配 index #返回子字符串第一次被匹配的位置 substr #返回從位置1開始的子字符串,若是指定長度超過實際長度,就返回整個字符串 split #可按給定的分隔符把字符串分割爲一個數組,默認按當前FS值進行分割 length #返回記錄的字符數 toupper #可用於字符串大小間的轉換,該功能只在gawk中有效 tolower #可用於字符串大小間的轉換,該功能只在gawk中有效 # awk 經常使用函數 srand(x) #x是rand()函數的種子 int(x) #取整 rand() #產生一個大於等於0而小於1的隨機數
案例使用(有不少種方法,今天咱們這裏只說三劍客的使用方法)編程語言
1.快速取出本機IP?函數
# grep ifconfig eth0|grep -Po '(?<=dr:)\S+' # sed ifconfig eth0|sed -rn 's#.*r:(.*) B.*#\1#gp' # awk ifconfig eth0|awk -F '[ :]+' 'NR==2{print $4}'
2.原始數據格式替換成新數據格式(grep本身沒法實現該功能了)工具
原始數據:
17/Apr/2015:09:29:24 +0800
17/Apr/2015:09:30:26 +0800
17/Apr/2015:09:31:56 +0800
18/Apr/2015:09:34:12 +0800
18/Apr/2015:09:35:23 +0800
19/Apr/2015:09:23:34 +0800
19/Apr/2015:09:22:21 +0800
20/Apr/2015:09:45:22 +0800
指望結果:
2015-04-17 09:29:24+0800
2015-04-17 09:30:26+0800
2015-04-17 09:31:56+0800
2015-04-18 09:34:12+0800
2015-04-18 09:35:23+0800
2015-04-19 09:23:34+0800
2015-04-19 09:22:21+0800
2015-04-20 09:45:22+0800spa
# sed code
sed -rn 's#Apr#04#g;s#^(.*)/(.*)/(....):(.*) (.*)#\3-\2-\1 \4\5#p;' test.log sed -rn 's#^(.{2})/(.{3})/(.{4}):(.{8}) (.{4})#\3-04-\1 \4\5#p;' test.log
# awk
awk -F '[/: ]+' '{sub(/Apr/,"04");printf("%s-%s-%s %s:%s:%s%s\n",$3,$2,$1,$4,$5,$6,$7)}' test.log awk '{sub(/Apr/,"04");split($0,array,"[/: ]") ;printf("%s-%s-%s %s:%s:%s%s\n",array[3],array[2],array[1],array[4],array[5],array[6],array[7])}' test.log