一、awk求和為空顯示0
在實際應用中,經常會遇到需要進行文件數值求和的情況。而在awk中,求和的函數為sum,使用方法為:
awk '{sum+=$1} END {print sum}' file.txt
可能會出現file.txt中不存在數值的情況,此時awk會輸出不知道的結果,而這無疑會影響程序的正確性。因此,我們可以在求和前加一個if判斷,當文件為空時,輸出0。代碼如下:
awk '{if(NR==1)sum=0;sum+=$1} END {if(NR==0)print "0";else print sum}' file.txt
當文件為空時,程序會輸出0,避免了結果不確定的情況。
二、awk求和取消科學記數法
在Linux中,如果輸出結果太大,會自動使用科學記數法輸出。這在輸出結果需要進行進一步計算時,會產生困擾。因此,我們需要取消科學記數法,輸出實際數值。
awk '{sum+=$1} END {printf "%.0f",sum}' file.txt
在printf中,%.0f的含義是保留小數點後0位,這樣就可以輸出實際數值。
三、awk求和為空添加0
在文件中,有些行是空行,這些空行無法直接相加,而更改文件很麻煩。我們可以在awk中,將空行的值默認為0,再進行求和。代碼如下:
awk '{if($1!=""){sum+=$1}else{sum+=0}} END {print sum}' file.txt
當行不為空時,將數值累加;當行為空時,將默認數值0累加。
四、awk求和sum
awk中,提供了一個內嵌變量sum,提供了快速求和的方式。使用方法和變量名均為sum,代碼如下:
awk '{sum+=$1} END {print sum}' file.txt
相較於手動累加,使用內嵌變量sum的方式更為簡便。
五、求kcrwf等於ak
在awk中,我們可以將一個值賦給變量,方便後續進行操作。在下例中,我們需要對$kcrwf的值進行變換,使其等於$ak。代碼如下:
awk '{$kcrwf=$ak} {sum+=$kcrwf} END {print sum}' file.txt
在對變量進行賦值後,我們使用$kcrwf進行操作即可。值得注意的是,當進行賦值操作後,需要在同一行進行操作,否則賦值無效。
六、awk求和顯示0
當文件中並不存在需要求和的數值時,awk會將結果默認輸出為空。但是,在某些場景下,我們需要將空值顯示為0,此時,我們可以加一個if語句進行判斷。代碼如下:
awk '{sum+=$1} END {if(sum==""){printf "0"}else{print sum}}' file.txt
當sum為””時,輸出0;否則輸出sum。這樣做的好處是,無論sum是否為空,都可以把控輸出結果。
七、linux awk求和
awk本身就是一款強大的文本處理工具,在Linux中使用也十分廣泛。對於求和操作而言,Linux中的awk同樣對於數字類型做了充足的支持。使用方法與Linux awk類似,只是將$0換成實際的數字,即可完成求和操作。代碼如下:
echo "1 2 3 4 5" | awk '{sum+=$1} END {print sum}'
在控制台中輸入一連串數字,使用管道傳入awk中,然後求和輸出結果。與Linux awk相比,調用方式更為簡便。
八、awk獲取指定字符串
在awk中,我們可以使用$0獲取整行的值,使用$1獲取第一個值。但是,當我們需要獲取一個字符串中的一部分時,我們需要使用substr函數。substr函數的使用方法為:
awk '{print substr($0,2,3)}' file.txt
整個substr函數分為三個參數,第一個參數表示字符串本身,第二個參數表示開始的位置,第三個參數表示結束的位置。例如上式中的substr($0,2,3),表示從字符串$0的第二位開始,往後取3個字符。
九、awk數組打印for循環
在awk中,我們可以使用數組對數據進行分析,同時使用for循環打印分析結果。使用數組時,我們可以將每個值存入數組中,使用for循環進行輸出。
awk '{counts[$1]++} END {for(word in counts){print word,counts[word]}}' file.txt
上式中,我們使用counts數組存儲行中每個值出現的次數。然後,在使用for循環遍歷counts數組,輸出結果。這樣,我們就可以清晰地看到每個值出現的次數。
十、awk正則表達式匹配數字
在實際應用中,我們可能只需要對文件中指定格式的數字進行求和。此時,我們可以使用正則表達式匹配指定格式的數字,再進行求和。
awk '{for(i=1;i<=NF;i++){if($i~/^[0-9]+(\.[0-9]+)?$/){sum+=$i}}} END {print sum}' file.txt
上式中,我們使用for循環匹配每個單元格中是否符合正則表達式格式,再進行累加。正則表達式的含義是:數字的整數部分可以使用0~9中任意數字,小數部分使用.開頭加任意數字。即匹配任意數值的格式。並且在匹配過程中避免了不合法字符的出現,增加了程序的穩健性。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/239342.html