shell下完成統計單詞數量

2021-09-26 13:37:51 字數 2362 閱讀 5657

本文主要是加強自己對linux系統下的一些命令的認識,同時完成一些測試;篇幅較長,選擇性看把

假設文中的單詞都是以空格劃分的;

awk -f" "

'} end}' words.txt|

sort -nr -k 2

#-f fs指定輸入分割符, 以空格進行劃分,讀取檔案行,

#對每一行執行for語句:nf為對應行的字段數(每一行的字段數,單詞數);

#$i表示對應的字段數,假設該行a b c d a a ,array[$i]=array[a]+=1 最後的值就為3,對應的鍵就為a;

#for(s in array)表示依次迭代array陣列的下標,賦值給變數s;awk命令可以根據字串索引下標

#sort排序命令 -k用來指定按那一列進行排序,-k 2這裡是第二列,-r按降序排序,因為預設是公升序;

#-n告訴sort按數值排序,沒有的話10<2,因為程式會先比較1和2顯然1比2小

sed

's/[,.:;/!?]/ /g' word.txt #ward.txt檔案在通過awk處理

注意:

1.不要把』 』 寫出 ``

2.不要把f 寫出 f

3.不要把nf 寫出fn 多寫

4,不要把print寫出printf含義不一樣

grep -e "\b[[:alpha:]]+\b"  test.txt  -o |

sort

|uniq -c |

sort -rn -k 1

#grep命令用於查詢檔案裡符號條件的字串

#-e 將樣式為延伸的普通表示法來使用;

# "\b[[:alpha:]]+\b" 正規表示式中: [[:alpha:]]所有字元

# +表示匹配前面的子表示式一次或多次 \b:backspace退格print引數:表示每行匹配完回車

#\b表示單詞的開始或結束

#-o 只匹配列印的內容

#uniq用於去除重複的行,並將結果輸出到標準輸出;-c在輸出行前面加上每次在輸入檔案**現的次數

不要忘記-o:表示只匹配列印的內容

tr命令可以看作是sed命令的簡化變體,實現一些最基本的功能

tr(translate縮寫)主要用於刪除檔案中控制字元,或進行字元轉換

cat test.txt |

tr -cs "[a-z][a-z]"

"[\012*]"

|tr a-z a-z|

sort

|uniq -c|

sort -k1nr |

head -10

#tr語法:tr [–c/d/s/t] [set1] [set2]

#-c使用set2替換set1中沒有包含的字元即用[\012*] 替換,使用換行符替換除字母外的所以字元

#-s 壓縮set1中重複的字元 \012不表示換行符 ,刪除多餘的換行符

#echo aaabbbcccddd |tr -s [abc]

#輸出acbdd

基本上都是常用命令的一些組合萬變不離其中

#!/bin/sh

#指令碼需要兩個引數,第乙個引數是要統計的檔案,第二個引數是輸出統計結果的檔案。

for line in

`cat $1`;do

count=

`echo $line|

wc -m`

echo

$count

$line

i=1;

while

["$i" -lt "$count"];

do one_word=

`echo $line|

cut -c$i`

#echo $i $one_word

echo

"$one_word"

>>temp

((i++

)) done

done

sort temp|

uniq -c|

sort -k1nr >

$2rm -f temp

參考:

awk完成統計參考

awk學習參考

grep完成統計

sed命令學習

uniq命令學習

正規表示式學習

tr命令學習

統計單詞數

include include include include include includeusing namespace std struct node int main else if s.find 1 transform s.begin s.end s.begin toupper sourc...

單詞數目統計

時間限制 10 sec 記憶體限制 128 mb neo 給你一系列字串,請你輸出字串中的不同單詞個數以及總單詞個數。多組輸入,每組資料都是一行字串 長度小於200 其中每個單詞以空格隔開 單詞都是小寫字母組成 輸出字串中的不同單詞個數以及總單詞個數。i love china aa aa bb 3 ...

2019 3 20統計單詞數

題目描述 修羅王和邪狼潛入銀行盜走了大量的珠寶,警察經過仔細查詢和推理,終於找到了裝有這批珠寶的保險櫃,但無法開啟保險櫃。經過觀察發現保險櫃背面有一行字元,且發現只要統計出這行字串中有多少個單詞就是開啟保險櫃的密碼。單詞之間由乙個或多個空格分開,且字串不以空格開頭。輸入描述 輸入一行包含若干空格的字...