手機自適應網(wǎng)站建設深圳網(wǎng)站做優(yōu)化哪家公司好
linux常用命令介紹 05 篇——實際應用篇(用 cut、uniq等統(tǒng)計文檔里每個關鍵詞出現(xiàn)的次數(shù))
- 1. 先導文章——關于行過濾 和 列截取
- 2. 關于單個統(tǒng)計單詞個數(shù)
- 2.1 grep
- 2.2 wc
- 3. 統(tǒng)計文檔中每個關鍵詞出現(xiàn)的次數(shù)
- 3.1 先看文檔內(nèi)容 + 需求
- 3.1.1 文檔內(nèi)容
- 3.1.2 需求
- 3.2 分析并實現(xiàn)需求
1. 先導文章——關于行過濾 和 列截取
-
前幾天被問到一個問題,之前沒用過,感覺挺尷尬的,束手無策,今天抽空去了解一下,其實就兩三個命令的事,不過感覺也挺有意思的,順便記錄下來,供大家參考。
-
看這篇文章之前用到了其他工具,如果需要的話,可以看看下面的文章:
linux常用命令介紹 03 篇——常用的文本處理工具之grep和cut(以及部分正則使用).
2. 關于單個統(tǒng)計單詞個數(shù)
2.1 grep
- 上篇文章里有介紹,可以使用
grep -c
的命令進行統(tǒng)計,如下:grep -c 'www.google.com' http.txt
2.2 wc
- wc 統(tǒng)計使用選項如下:
wc -l
:統(tǒng)計單詞出現(xiàn)的行次數(shù)wc -w
:統(tǒng)計單詞出現(xiàn)的次數(shù)
- 使用例子如下:
grep 'www.google.com' http2.txt | wc -w grep 'www.google.com' http2.txt | wc -l cat http2.txt | grep '8080' | wc -w
3. 統(tǒng)計文檔中每個關鍵詞出現(xiàn)的次數(shù)
3.1 先看文檔內(nèi)容 + 需求
3.1.1 文檔內(nèi)容
- 文檔內(nèi)容如下:
https://www.google.com/index.html https://www.baidu.com/index.html https://www.zhihu.com/ https://www.csdn.net/ https://weread.qq.com/ https://www.baidu.com/hello.html http://localhost:8080/hello.html https://www.google.com/en.html https://www.google.com/cn.html
3.1.2 需求
- 想實現(xiàn)的需求就是,把上面文檔里的所有域名進行統(tǒng)計,并排序打印,要實現(xiàn)如下的效果(前面是域名出現(xiàn)的次數(shù),后面是域名):
3.2 分析并實現(xiàn)需求
- 觀察文檔里的內(nèi)容,分析如下:
- 第一步:列截取域名
- 首先,我們提取的有規(guī)律,是域名,所以根據(jù)文檔里內(nèi)容的規(guī)律,考慮使用列截取方法,使用 cut 工具。此處不熟悉的可以點進去上面的鏈接。
- 二話不說,執(zhí)行命令,先看第一步效果:
cut -d'/' -f3 http.txt
嗯,還不錯,濃縮出精華來了,但是localhost:8080
不是我們想要的,怎么處理,接下來第二步……
- 第二步:行過濾掉非域名 localhost:8080
-
根據(jù)第一步的效果,我們在第二步里要把
localhost:8080
這個就要用到我們的 grep 行過濾了,不太清楚的話,還是點進去上面的鏈接,這里不多說,直接看效果:cut -d'/' -f3 http.txt | grep -v 'localhost'
嗯,貌似也還不錯,至少達到了我們第二步想要的效果了,好,接下來就是怎么統(tǒng)計并排序了,這就需要用到我們另一個命令了,uniq
,關于這個命令的使用可以看下面的文章,在這里不做介紹,如下:linux常用命令介紹 04 篇——uniq命令使用介紹(Linux重復數(shù)據(jù)的統(tǒng)計處理).
-
- 第三步:使用
uniq
命令 和sort
命令進行排序并統(tǒng)計- 對這兩命令有疑問的,點上面的鏈接,里面有詳細的介紹與使用示例。
- 下面直接看效果:
cut -d'/' -f3 http.txt | grep -v 'localhost' | sort cut -d'/' -f3 http.txt | grep -v 'localhost' | sort | uniq -c
好,幾乎接近我們要實現(xiàn)的目標了,就差怎么把前面統(tǒng)計的數(shù)字也給排序一下了,繼續(xù)往下……
- 第四步:按域名統(tǒng)計個數(shù)的數(shù)字大小進行排序
- 這步就是在上面基礎上再使用一次
sort
即可,生序、降序都可實現(xiàn),效果如下:cut -d'/' -f3 http.txt | grep -v 'localhost' | sort | uniq -c | sort cut -d'/' -f3 http.txt | grep -v 'localhost' | sort | uniq -c | sort -r
好了,到這里就是完美地實現(xiàn)了上面的需求了!!
- 這步就是在上面基礎上再使用一次
- 第五步:可了解
- 當然,上面四步已經(jīng)實現(xiàn)了需求,下面這個只是了解,我就方上效果,可以看看:
cut -d'/' -f3 http.txt | grep -v 'localhost' | sort | uniq -c | sort -r | awk '{print $2,$1}' cut -d'/' -f3 http.txt | grep -v 'localhost' | sort | uniq -c | sort -r | awk '{print $1,$2}'
好了,這個就介紹到這里吧,希望對你有幫助!
- 當然,上面四步已經(jīng)實現(xiàn)了需求,下面這個只是了解,我就方上效果,可以看看: