awk和grep使用實(shí)例分析

這篇文章主要講解了“awk和grep使用實(shí)例分析”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“awk和grep使用實(shí)例分析”吧!

無極網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),無極網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為無極數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的無極做網(wǎng)站的公司定做!

awk && grep 簡介

日常工作中經(jīng)常會使用 awk 和 grep 等命令做簡單的數(shù)據(jù)統(tǒng)計(jì)工作,簡便高效。awk 命令的最基本功能是在文件或者字符串抽取信息。通常 awk 是以文件的一行為處理單位的。awk每接收文件的一行,然后執(zhí)行相應(yīng)的命令,來處理文本。grep 命令則主要用于查找文件里符合條件的字符串。

awk

示例文件

// example.txt

a 10 200
a 30 100
b 20 300
c 10 100
c 20 800
c 30 600

關(guān)鍵參數(shù)

  • -F:指定分隔符
  • FILENAME:文件名
  • NR:行號
  • NF:每行的列數(shù)
  • $0:變量是指整條記錄
  • BEGIN 和 END:BEGIN 被放置在沒有讀取任何數(shù)據(jù)之前執(zhí)行,一般用來做初始化操作,而 END 被放置在所有的數(shù)據(jù)讀取完成以后執(zhí)行,一般用來輸出處理結(jié)果

示例

# 指定分隔符為空格,每次都打印文件名、行號、列數(shù)、當(dāng)前行的內(nèi)容
awk  -F ' '  '{print "filename:"FILENAME,"linenumber:"NR,"columns:"NF, "linecontent:"$0}' example.txt

# 打印第一列
awk -F ' ' '{print $1}' example.txt

# 打印倒數(shù)第一列
awk -F ' ' '{print $NF}' example.txt

# 打印倒數(shù)第二列
awk -F ' ' '{print $NF-1}' example.txt

# 打印第二行整行
awk -F ' ' 'NR==2 {print "filename:"FILENAME,"linecontent:"$0}' example.txt

# 第二列求和
awk '{sum+=$2} END {print "sum: " sum}' example.txt

# 第一列為 key,第二列為 value,求每個 key 對應(yīng)的所有 value 的和
awk '{sum[$1]+=$2} END {for(idx in sum) print idx, sum[i]}' example.txt

# 統(tǒng)計(jì)第一列的元素分別出現(xiàn)了幾次
awk '{sum[$1]+=1}END{for(i in sum)print i,sum[i]}' example.txt

# 統(tǒng)計(jì)前兩列元素出現(xiàn)的次數(shù)
awk '{sum[$1" "$2]++}END{for(i in sum)print i,sum[i]}'

# 統(tǒng)計(jì)第三列值 ≤500 和 >500 的行數(shù)
awk -F ' ' 'BEGIN{i=0;j=0}{if($3<=500){i++}else{j++}}END{print i,j}' example.txt

# 統(tǒng)計(jì)第三列值 ≤200、≤500(>200)、>500 的行數(shù)
awk 'BEGIN{i=0;j=0;k=0}{if($3<=200){i++}else if($3<=500){j++}else{k++}}END{print i,j,k}' example.txt

# 循環(huán)語句
awk 'BEGIN{for(i=1;i<=5;i++){print i}}'
awk 'BEGIN {{i=1}do{print i;i++} while (i<=5)}'

grep

關(guān)鍵參數(shù)

  • -a :將 binary 文件以 text 文件的方式搜尋數(shù)據(jù)
  • -c :計(jì)算找到 '搜尋字符串' 的次數(shù)
  • -i :忽略大小寫的不同,所以大小寫視為相同
  • -n :順便輸出行號
  • -v :     反向選擇,亦即顯示出沒有 '搜尋字符串' 內(nèi)容的那一行
  • --color=auto :可以將找到的關(guān)鍵詞部分加上顏色

示例

grep [-acinv] [--color=auto] '搜尋字符串' filename

# 取出 /etc/passwd 文件中有 root 的行
grep root /etc/passwd

# 取出 /etc/passwd 文件中有 root 的行,同時(shí)顯示行號
grep -n root /etc/passwd

# 將沒有出現(xiàn) root 的行取出來
grep -v root /etc/passwd

# 將沒有出現(xiàn) root 和 nologin 的行取出來
grep -v root /etc/passwd | grep -v nologin

# 使用 dmesg 列出關(guān)鍵信息,再以 grep 找出包含 eth 的行,將關(guān)鍵字所在的行的前 2 行和后 3 行一起取出來顯示
dmesg | grep -n -A3 -B2 --color=auto 'eth'

# 在當(dāng)前目錄搜索帶 energywise 行的文件
grep 'energywise' *    

# 在當(dāng)前目錄及其子目錄下搜索帶 energywise 行的文件
grep -r 'energywise' *

# 在當(dāng)前目錄及其子目錄下搜索帶 energywise 行的文件,但是不顯示匹配的行,只顯示匹配的文件
grep -l -r 'energywise' *

感謝各位的閱讀,以上就是“awk和grep使用實(shí)例分析”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對awk和grep使用實(shí)例分析這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

網(wǎng)站欄目:awk和grep使用實(shí)例分析
標(biāo)題路徑:http://bm7419.com/article6/jceoog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站導(dǎo)航、網(wǎng)站內(nèi)鏈、定制網(wǎng)站移動網(wǎng)站建設(shè)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管