新聞中心
在數(shù)據(jù)處理過(guò)程中,經(jīng)常會(huì)遇到需要將數(shù)據(jù)按照某一列的值進(jìn)行分組并進(jìn)行操作的情況。在關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)中,這一操作可以通過(guò)SQL語(yǔ)句中的group by實(shí)現(xiàn)。而在Linux環(huán)境下,類(lèi)似的分組操作同樣可以通過(guò)一些工具來(lái)實(shí)現(xiàn)。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),浦北企業(yè)網(wǎng)站建設(shè),浦北品牌網(wǎng)站建設(shè),網(wǎng)站定制,浦北網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,浦北網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
一、使用awk進(jìn)行分組
awk是一種使用廣泛的文本處理工具,可以方便地對(duì)文本數(shù)據(jù)進(jìn)行分割、過(guò)濾、計(jì)算等操作。對(duì)于需要按照某一列的值進(jìn)行分組的情況,可以通過(guò)awk中的數(shù)組來(lái)實(shí)現(xiàn)。
以一個(gè)簡(jiǎn)單的數(shù)據(jù)集為例,假設(shè)其中有兩列數(shù)據(jù),之一列為城市名,第二列為人口數(shù)量。如果需要按照城市名進(jìn)行分組并計(jì)算每個(gè)城市的人口總數(shù),可以使用如下命令:
“`
awk ‘BEGIN{FS=”\t”}{population[$1]+=$2}END{for(city in population) print city,population[city]}’ data.txt
“`
其中FS指定了分隔符為制表符(默認(rèn)為空格),population[$1]+=$2表示以之一列的值為索引,將第二列的值累加到對(duì)應(yīng)的數(shù)組元素中,最后通過(guò)for循環(huán)遍歷數(shù)組并輸出分組結(jié)果。
二、使用sort和uniq進(jìn)行分組
sort和uniq是Linux環(huán)境下廣為使用的排序和去重工具,通過(guò)結(jié)合使用這兩個(gè)工具也可以實(shí)現(xiàn)數(shù)據(jù)分組。
假設(shè)需要按照某一列的值進(jìn)行分組,并計(jì)算每個(gè)分組中的行數(shù)??梢允褂萌缦旅睿?/p>
“`
sort -k 1 data.txt | uniq -c
“`
其中-k 1指定以之一列的值作為排序依據(jù),同時(shí)uniq -c用于輸出每個(gè)分組中行的數(shù)量。需要注意的是,sort和uniq都要求輸入數(shù)據(jù)已經(jīng)按照指定的列進(jìn)行排序,否則輸出結(jié)果可能會(huì)不準(zhǔn)確。
三、使用pivot_table.py進(jìn)行分組
pivot_table.py是Python語(yǔ)言中的一種數(shù)據(jù)透視工具,可以方便地實(shí)現(xiàn)基于某一列的數(shù)據(jù)分組操作。
假設(shè)需要按照某一列的值進(jìn)行分組,并計(jì)算每個(gè)分組中數(shù)據(jù)的平均值。可以使用如下命令:
“`
pivot_table.py data.txt –rows=city –values=population –aggfunc=mean
“`
其中–rows選項(xiàng)指定以city列進(jìn)行分組,–values選項(xiàng)指定計(jì)算population列的平均值,–aggfunc指定使用mean函數(shù)進(jìn)行聚合操作。
在Linux環(huán)境下,基于group by的數(shù)據(jù)分組操作可以通過(guò)多種工具來(lái)實(shí)現(xiàn),根據(jù)具體需求和數(shù)據(jù)處理能力的限制,選擇適合自己的工具是非常重要的。
相關(guān)問(wèn)題拓展閱讀:
- linux centos apache日志怎么打開(kāi)
linux centos apache日志怎么打開(kāi)
yum install -y epel-release && yum clean all &&yum makecache
yum install -y perl-DBD-SQLite perl-Term-ReadLine-Gnu -y
#下載asql包。漢字換成字符。或者安裝到系統(tǒng)中
wget https冒號(hào)//steve點(diǎn)fi/Software/asql/asql-1點(diǎn)7點(diǎn)tar點(diǎn)gz
tar xvfvz asql-1.7.tar.gz
cd asql-1.7/bin/
#在終端直接敲寬渣./asql 進(jìn)入程序
./asql
#安裝方法為
cd asql-1.7 && make install
#################
#source 為客戶(hù)端IP
#date 為日期
#status 為 HTTP狀態(tài)代碼,200 正常,403禁止訪(fǎng)問(wèn),404未找到 等等
#request 為訪(fǎng)問(wèn)的具體文件
#size 為客戶(hù)端請(qǐng)求的數(shù)據(jù)量(或者是數(shù)據(jù)傳輸量)。
#####################
#載入日志文件,路徑為log文件所在路徑。
#debian like
asql> load /var/log/apache2/access.*
#centos/rhel like
sql> load /var/log/httpd/access_log*
# root @ konvicts in ~/asql-1.7/bin
$ ./asql
Name “Regexp::IPv6::IPv6_re” used only once: possible typo at ./asql line 1534.
asql v1.7 – type ‘help’ for help.
asql> load /home/wwwlogs/access.log
Loading: /home/wwwlogs/access.log
asql>
#查詢(xún)制定時(shí)間段的客戶(hù)端IP (今年6月25號(hào)凌晨0點(diǎn)以后的客戶(hù)端IP)
SELECT source, date, status FROM logs WHERE date >= ‘T00:00:00’ ORDER BY source;
asql> 慎拿悄SELECT source, date, status FROM logs WHERE date >= ‘T00:00:00’ ORDER BY source
107.150.7.T00:13:32 200
107.150.7.T00:13:33 499
107.150.7.T04:08:23 499
111.162.144.T00:13:34 200
123.125.71.T04:08:23 200
#以降序顯示每個(gè)客戶(hù)端提供的請(qǐng)求的總大?。ㄒ宰止?jié)敏宴為單位)
select source,SUM(size) AS Number FROM logs GROUP BY source ORDER BY Number DESC;
asql> select source,SUM(size) AS Number FROM logs GROUP BY source ORDER BY Number DESC;
123.117.42.
123.117.46.
111.200.229.
107.150.7.
111.162.144.
111.162.147.
111.162.156.
111.162.145.
111.162.158.
178.173.156.79 398
123.125.71.105 67
#保存數(shù)據(jù)到一個(gè)文件
save test.
#載入已存數(shù)據(jù)到一個(gè)新的asql會(huì)話(huà)
restore test.
#篩選 404錯(cuò)誤,并用日期排序
SELECT source,date,status,request FROM logs WHERE status=’404′ ORDER BY date
asql> select source,date,status,request FROM logs WHERE status=’404′ ORDER BY date
關(guān)于linux 中 group by的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開(kāi)通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn)。專(zhuān)業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
網(wǎng)站標(biāo)題:Linux中使用groupby實(shí)現(xiàn)數(shù)據(jù)分組(linux中g(shù)roupby)
轉(zhuǎn)載來(lái)源:http://m.5511xx.com/article/cdgihhc.html


咨詢(xún)
建站咨詢(xún)
