日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
利用LinuxShell實(shí)現(xiàn)分組求和功能(linuxshell分組求和)

對(duì)于大量數(shù)據(jù)的處理,分組求和是一種非常常見的需求,這個(gè)需求并不復(fù)雜,但對(duì)于不熟悉程序開發(fā)的人員來(lái)說(shuō),也許還需要借助一些實(shí)用工具來(lái)實(shí)現(xiàn)。而在Linux系統(tǒng)中,我們可以使用Shell腳本來(lái)快速實(shí)現(xiàn)分組求和的功能。

創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為黃巖等服務(wù)建站,黃巖等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為黃巖企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

步驟一:準(zhǔn)備數(shù)據(jù)

我們需要準(zhǔn)備一些原始數(shù)據(jù),這些數(shù)據(jù)可以是文本文件、CSV文件、ON文件等等格式,但是必須是可以使用命令行讀取的格式。在本文中,我們使用文本文件來(lái)舉例說(shuō)明。

假設(shè)我們有一個(gè)名為“data.txt”的文本文件,其內(nèi)容如下所示:

apple 20

apple 10

banana 15

banana 12

orange 8

orange 11

在這個(gè)文件中,每行都代表一個(gè)數(shù)據(jù)點(diǎn),由兩個(gè)字段組成,之一個(gè)字段表示數(shù)據(jù)的分組,第二個(gè)字段表示數(shù)據(jù)的數(shù)值。

步驟二:編寫Shell腳本

接下來(lái),我們需要編寫Shell腳本,來(lái)對(duì)這些數(shù)據(jù)進(jìn)行分組求和。在本文中,我們使用Bash Shell作為編寫腳本的工具。

我們需要將原始數(shù)據(jù)按照分組進(jìn)行分割,這可以通過(guò)awk命令來(lái)實(shí)現(xiàn),具體操作如下所示:

awk ‘{sum[$1]+=$2}END{for(i in sum){print i,sum[i]}}’ data.txt

解釋一下這個(gè)命令,首先使用awk命令讀取原始數(shù)據(jù)文件,然后使用花括號(hào)“{}”來(lái)表示需要執(zhí)行的操作。其中的“sum[$1]+=$2”表示將原始數(shù)據(jù)按照之一個(gè)字段(即分組)進(jìn)行分組,然后將每個(gè)分組的數(shù)據(jù)的第二個(gè)字段(即數(shù)值)進(jìn)行求和,并存儲(chǔ)到一個(gè)名為“sum”的變量中。使用“END”關(guān)鍵字表示完成數(shù)據(jù)處理后需要執(zhí)行的操作,這里我們使用一個(gè)“for”循環(huán)來(lái)遍歷所有分組,然后輸出每個(gè)分組的名稱和對(duì)應(yīng)的求和結(jié)果。

執(zhí)行這個(gè)命令后,我們就可以得到如下的輸出結(jié)果:

orange 19

banana 27

apple 30

這個(gè)輸出結(jié)果表示,對(duì)于原始數(shù)據(jù)中的三個(gè)分組(orange、banana、apple),分別對(duì)應(yīng)的求和結(jié)果分別是19、27和30。

步驟三:優(yōu)化Shell腳本

上面的Shell腳本已經(jīng)可以滿足分組求和的需求,但是在實(shí)際應(yīng)用中,我們可能需要對(duì)Shell腳本進(jìn)行一些優(yōu)化,來(lái)提高其執(zhí)行效率和代碼的可讀性。

我們可以將Shell腳本保存為一個(gè)單獨(dú)的文件,比如“sum.sh”:

#!/bin/bash

awk ‘{sum[$1]+=$2}END{for(i in sum){print i,sum[i]}}’ $1

然后,我們可以添加一些注釋來(lái)解釋腳本的作用:

#!/bin/bash

# 分組求和腳本

# Usage: ./sum.sh data.txt

awk ‘{sum[$1]+=$2}END{for(i in sum){print i,sum[i]}}’ $1

在這個(gè)腳本中,之一行表示這是一個(gè)Bash Shell腳本,第二行和第三行分別是腳本的注釋,用來(lái)說(shuō)明腳本的作用和使用方法。第四行是實(shí)際的腳本命令,和之前的命令相同,只是添加了一個(gè)參數(shù)“$1”,表示需要傳入一個(gè)數(shù)據(jù)文件名。

另外,我們可以使用一些Shell腳本的技巧來(lái)簡(jiǎn)化代碼,比如使用管道符“|”將命令串聯(lián)起來(lái),將多個(gè)操作同時(shí)執(zhí)行:

cat data.txt | awk ‘{sum[$1]+=$2}END{for(i in sum){print i,sum[i]}}’

這個(gè)命令的用法和之前的命令相同,只是使用了一個(gè)cat命令來(lái)讀取原始數(shù)據(jù)文件,并將結(jié)果通過(guò)管道傳遞給awk命令。

在本文中,我們介紹了如何使用Linux Shell來(lái)實(shí)現(xiàn)分組求和的功能,這個(gè)功能可以廣泛應(yīng)用于大數(shù)據(jù)分析、數(shù)據(jù)清洗、數(shù)據(jù)挖掘等領(lǐng)域。通過(guò)編寫Shell腳本,我們可以快速高效地實(shí)現(xiàn)數(shù)據(jù)處理的需求。當(dāng)然,Shell腳本并不是唯一的工具,如果您需要更加復(fù)雜和高效的處理方式,可以考慮使用Python、R、SQL等其他工具來(lái)實(shí)現(xiàn)。

成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220

學(xué)生信的那些事兒之七 – Linux基礎(chǔ)之Shell腳本編程

沿著前面的軌跡,接下來(lái)是Linux中shell腳本的學(xué)習(xí)。這對(duì)于生信工程師后續(xù)處理大量 (海量更合適些) 數(shù)據(jù)是非常非常脊碼重要的,但是同樣的,作為一個(gè)有點(diǎn)古板的人,對(duì)于”腳本”是什么意思我都死磕了好久。主要覺(jué)得有些抽象,尤其是跟生信的同事討論項(xiàng)目分析部分的問(wèn)題時(shí),他們經(jīng)常會(huì)說(shuō)道這個(gè)詞,在他們意識(shí)里這是個(gè)不言自明的術(shù)語(yǔ),殊不知對(duì)外行人而言 (比如我),那簡(jiǎn)直就是無(wú)情的”知識(shí)的詛咒”。經(jīng)常是我假裝聽懂了,然后繼續(xù)討論下面的問(wèn)題,形成一個(gè)模糊的印象。

百度上的解釋是:腳本(Script)是一種批處理文件的延伸,是一種純文本保存的程序,一般來(lái)說(shuō)的計(jì)算機(jī)腳本程序是確定的一系列控制計(jì)算機(jī)進(jìn)行運(yùn)算操作動(dòng)作的組合,在其中可以實(shí)現(xiàn)一定的邏輯分支等。不知道你能不能看懂,反正我開始的時(shí)候真是一知半解。

鳥哥私房菜的解釋是:shell script是利用 shell 的功能所寫的一個(gè)”程序”,這個(gè)程序是使用純文本文件,將一些shell的語(yǔ)法與命令(含外部命令)寫在里面,搭配正則表達(dá)式、管道命令與數(shù)據(jù)流重定向等功能,以達(dá)到我們所想要的處理的目的。不明覺(jué)厲,好像更看不懂了···

Jude 的簡(jiǎn)單粗暴大白話解釋是:腳本就是Linux中很多命令按照一定規(guī)則的組合,以實(shí)現(xiàn)某個(gè)特定的功能。Linux中有很多簡(jiǎn)單的命令,往往只是進(jìn)行了簡(jiǎn)單的對(duì)話,比如 cd 就是進(jìn)入到某個(gè)目錄,簡(jiǎn)單直接。但是如果我想進(jìn)入某個(gè)目錄A,然后在目錄A中創(chuàng)建目錄B,再在目錄B中創(chuàng)建文本C呢?當(dāng)然可以一步一步操作,如果想要一步到位呢,那就可以用腳本,把三個(gè)命令寫在一起,一起執(zhí)行。好像有點(diǎn)啰嗦···

或者從英語(yǔ)的角度去理解,腳本的對(duì)應(yīng)英文是Script,而這個(gè)單詞的中文釋義中還有劇本的意思。劇本就好理解了啊,劇本就是導(dǎo)演(生信工程師)基于某個(gè)主旨(要實(shí)現(xiàn)的目標(biāo))按照一定的手法(規(guī)則)所寫的一個(gè)故事。不管是哪個(gè)演員,都得按照劇本演。所以,學(xué)好英語(yǔ)對(duì)于生信也是有幫助的~

按照腳本的復(fù)雜程度可以分為:

這個(gè)無(wú)需多說(shuō),其實(shí)就是若干個(gè)簡(jiǎn)單命令的順序排列,執(zhí)行腳本后會(huì)按照命令的前后關(guān)系從前往后一一執(zhí)行。

相對(duì)于簡(jiǎn)單的基本腳本,結(jié)構(gòu)化的命令腳本可以施加邏輯流程控制,從而改變程序(命令)執(zhí)行的順序?;灸_本中的命令就是從上往下執(zhí)行,但兄野迅是結(jié)構(gòu)化的命令腳本可以根據(jù)邏輯判斷重復(fù)或者跳過(guò)某些命令。

常用的結(jié)構(gòu)化命令(語(yǔ)句)有:

后面還有什么嵌套循環(huán)啊啥的,不過(guò)我覺(jué)得上面的7中命令學(xué)到家了,應(yīng)該可以應(yīng)付大部分在生信分析里面的應(yīng)用了。

記得高中的時(shí)候,物理老師(也是班主任)在給我們講解習(xí)題時(shí)有個(gè)有意思的套路:不管什么難題現(xiàn)在下面寫個(gè)”答:”,以示自己解決問(wèn)題的決心,也是一種正向的心理暗示。腳本編寫也是有套路的,不過(guò)總的來(lái)說(shuō)還是比較簡(jiǎn)單。

對(duì)于簡(jiǎn)單的腳本(超級(jí)簡(jiǎn)單的那種),直接幾個(gè)命令連在一起即可,中間用”;”隔開。

對(duì)于更長(zhǎng)更復(fù)雜的腳本,一般需要?jiǎng)?chuàng)建一個(gè)文本,并在里面編輯。這就涉及到了文本編輯器,比較常用和簡(jiǎn)單的一般有nano和vim,實(shí)在羨此很簡(jiǎn)單,規(guī)則也容易理解,教程隨手可得,不多說(shuō)。

比如用vim創(chuàng)建了一個(gè)腳本之后,具體的語(yǔ)法(套路):

ok,腳本寫完了,怎么讓腳本開始工作呢?這有涉及到之前講過(guò)的環(huán)境變量和相對(duì)路徑、絕對(duì)路徑了。方法有三:

就這么多吧,應(yīng)該有點(diǎn)感覺(jué)到了,剩下的就是狂練狂練了~

linux常用的shell有哪些

最常用的當(dāng)然是bash這個(gè)shell了,不需要多說(shuō),因?yàn)榇箝俜虏虏糠諰inux發(fā)行版都默認(rèn)是這個(gè)shell;還有C shell用戶也很多,因?yàn)樗恼Z(yǔ)法和C語(yǔ)言有點(diǎn)像;還有一個(gè)ash,念做A Shell,在智能路由器系統(tǒng)OpenWrt、LEDE上作為默認(rèn)圓型shell,話說(shuō)玩路由器Linux系統(tǒng)OpenWrt的也不少啊,好多硬件論壇上都知道這個(gè)系統(tǒng),所大悄以ash也算是常用的Linux shell吧。

Linux系統(tǒng)的shell作為操作系統(tǒng)的外殼,為用戶提供使用操作系統(tǒng)的接口。它是命令語(yǔ)言、命令解釋程序及程序設(shè)計(jì)語(yǔ)言。

shell是用戶和Linux內(nèi)核之間的接口程序,如果把Linux內(nèi)核想象成一個(gè)球體的中心,shell就是圍繞內(nèi)核的外層。當(dāng)從shell或其他程序向Linux傳遞命令時(shí),內(nèi)核會(huì)做出相應(yīng)的反應(yīng)。

shell是一個(gè)命令語(yǔ)言解釋器,它擁有自己內(nèi)建的shell命令集,shell也能被系統(tǒng)中的其他應(yīng)用程序所調(diào)用。用戶在提示符下輸入的命令都由shell先解釋然后傳給Linux核心。

Linux常用的shell有哪些?

1、Bourne shell

Bourne shell是一個(gè)交換式的命令解釋器和命令編程語(yǔ)言。

Bourne shell是標(biāo)準(zhǔn)的UNIX shell,以前常被用來(lái)做為管理系統(tǒng)之用。大部分的系統(tǒng)管理命令文件,例如rcstart、stop與shutdown都是Bourne shell的命令檔,且在單一使用者模式下以root簽入時(shí)它常被系統(tǒng)管理者使雀芹搏用。Bourneshell是由AT$T發(fā)展的,以簡(jiǎn)潔、快速著名,Bourne shell提示符號(hào)的默認(rèn)值是$。

2、C shell

C shell是一種比Bourneshell更適合的變種shell,使用的是類C語(yǔ)言,csh是具有C語(yǔ)言風(fēng)格的一種shell,其內(nèi)部命令有52個(gè),比較龐大。

C shell是柏克萊大學(xué)所開發(fā)的,且加入了一些新特性,如命令列歷程、別名、內(nèi)建算術(shù)、檔名完成和工作首拍控制。對(duì)于常在交談模式下執(zhí)行shell的使用者而言,他們較喜歡用C

shell;但對(duì)于系統(tǒng)管理者而言,則較偏好以Bourne shell來(lái)做命令檔,因?yàn)锽ourne shell命令檔比C shell命令檔來(lái)的簡(jiǎn)單及快速。C shell提示符號(hào)的默認(rèn)值是%。

3、頃祥korn shell

korn shell是一個(gè)Unix shell,它由貝爾實(shí)驗(yàn)室的David Korn在二十世紀(jì)八十年代早期編寫。它完全向上兼容Bourne shell并包含了c shell的很多特性,例如貝爾實(shí)驗(yàn)室用戶需要的命令編輯。

Korn shell是Bourne shell的超集,由AT&T的David korn所開發(fā)。它增加了一些特色,比C shell更為先進(jìn)。Korn shell的特色包括了可編輯的歷程、別名、函式、正則表達(dá)式萬(wàn)用字符、內(nèi)建算術(shù)、工作控制、共作處理和特殊的除錯(cuò)功能。Korn shell提示符號(hào)的默認(rèn)值也是$。

linux shell 分組求和的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于linux shell 分組求和,利用Linux Shell實(shí)現(xiàn)分組求和功能,學(xué)生信的那些事兒之七 – Linux基礎(chǔ)之Shell腳本編程,linux常用的shell有哪些的信息別忘了在本站進(jìn)行查找喔。

成都網(wǎng)站建設(shè)選創(chuàng)新互聯(lián)(?:028-86922220),專業(yè)從事成都網(wǎng)站制作設(shè)計(jì),高端小程序APP定制開發(fā),成都網(wǎng)絡(luò)營(yíng)銷推廣等一站式服務(wù)。


網(wǎng)站題目:利用LinuxShell實(shí)現(xiàn)分組求和功能(linuxshell分組求和)
本文鏈接:http://www.5511xx.com/article/dpdedee.html