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