shell指令碼統計檔案中單詞的個數
一、方案 http://www.cnblogs.com/youxuguang/p/5917215.html
方法一:
(1)cat file|sed 's/[,.:;/!?]/ /g'|awk '{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}' #其中file為要操作的檔案,sed中/ /間有一個空格。
(2)sed 's/[,.:;/!?]/ /g' file|awk '{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}' #(1)和(2)效果一致。
方法二:
(1)awk 'BEGIN{RS="[,.:;/!?]"}{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}' file
這裡 -F',' 表明每個詞用逗號分隔 https://zhidao.baidu.com/question/586302142.html NF其實是number of field, 即整行(或者說record)裡面詞 (更準確的翻譯應該是域)的總數 NF-1 就是倒數第二個詞sed ′s/\%//g‘
s表示替換,\%就表示百分號,s/\%//將%替換為空,最後的g標誌表示全部替換
即刪除所有的百分號
{for(i=1;i<=NF;i++)a[$i]++;
NF表示單行(記錄 )中欄位 數,$i表示對應欄位 ,假設 文字是 "a b c d a b a" ,a出現3次所以a[a]++執行了3次,a[a]的值增加了3,這個迴圈完成 後a陣列 中為已經讀取的行相同內容欄位出現次數
for (i in a) 表示 依次迭代a陣列 的下標 ,賦值給變數 i,如上例a陣列的下標 會是a,b,c,d(順序是隨機的),這四個下標會被按隨機順序賦值給變數 i。
print i"="a[i],列印欄位 i和其出現次數a[i]
這樣寫每讀取一行都 會列印 一次已經 重複出現過的欄位 統計,為什不只列印 最終 統計呢,像下面這樣
awk '{for(i=1;i<=NF;i++)a[$i]++;}
二、驗證
[[email protected] shell]# cat file
hello world,hi girl;how old are you?
where are you from?
how are you?
i am fine!thinks.
and you?
http://www.cnblogs.com/youxuguang/
[[email protected] shell]# cat file|sed 's/[,.:;/!?]/ /g'|awk '{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print
i,array[i]}'
com 1
http 1
from 1
www 1
i 1
you 4
hi 1
hello 1
youxuguang 1
and 1
world 1
cnblogs 1
where 1
old 1
how 2
fine 1
am 1
are 3
girl 1
thinks 1
[[email protected] shell]# sed 's/[,.:;/!?]/ /g' file|awk '{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}'
com 1
http 1
from 1
www 1
i 1
you 4
hi 1
hello 1
youxuguang 1
and 1
world 1
cnblogs 1
where 1
old 1
how 2
fine 1
am 1
are 3
girl 1
thinks 1
[[email protected] shell]# awk 'BEGIN{RS="[,.:;/!?]"}{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array) print i,array[i]}' file
com 1
http 1
from 1
www 1
i 1
you 4
hi 1
hello 1
youxuguang 1
and 1
world 1
cnblogs 1
where 1
old 1
how 2
fine 1
am 1
are 3
girl 1
thinks 1
相關推薦
shell指令碼統計檔案中單詞的個數
一、方案 http://www.cnblogs.com/youxuguang/p/5917215.html 方法一: (1)cat file|sed 's/[,.:;/!?]/ /g'|awk '{for(i=1;i<=NF;i++)array[$i]++;}END{for(i in array)
使用shell指令碼統計檔案中ip出現的次數
首先準備檔案demo.txt,內容如下: 1 192.168.41.20 2 192.168.41.21 3 192.168.41.22 4 192.168.41.23 5 192.168.41.24 6 192.168.41.25 統
統計檔案中單詞個數--c++實現
#include <iostream> #include <fstream> #include <cstdlib> #include <map> //用C++寫比較簡單,直接用map關聯容器就很好解決 int main(int
統計檔案中單詞的個數
include”stdafx.h” include include include define Inti_word 0 define In_word 1 define Out_word 2 define End_word 3 int Count_word(c
shell 指令碼替換檔案中的某個字串
1、將當前目錄下包含"qwe"串的檔案中的"qwe"字串替換為"abc" sed -i “s/qwe/abc/g” grep "qwe" -rl ./ 2、將某個檔案中的"qwe"字串替換為"abc" sed -i “s/qwe/abc/g” test.txt 如果將某個檔案
Hadoop 統計檔案中單詞出現的次數
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://
統計檔案中單詞出現的頻次
public class Util{ public static void main(String[] args) throws IOException { //鍵盤錄入指定檔名 Scanner sc = new Scanner(Sys
Shell指令碼統計指定目錄下子目錄中的檔案個數
#!/bin/bash function usage(){ echo "" echo "introduction: count of files subdir of source dir to save file.txt with [[subdir] [nu
使用shell指令碼統計原始碼檔案中的註釋行數.(// , /**/)
今天看到一求助帖子再問這個事,所以無聊寫了個。 用的是awk指令碼 , 也就是指令碼直譯器是用/usr/bin/awk , 而不是/bin/sh 但都是指令碼 , 如果你想的話, 可以用shell指令碼呼叫我這個awk指令碼就行了。 使用方法:將下面的指令碼儲存成檔案如ge
演算法之“統計字串中單詞的個數”
如,給定String,求此字串的單詞數量。字串不包括標點,大寫字母。例如String str="hello world hello hi";,單詞數量為3,分別是:hello world hello hi 。 public static void main(String[] args){
【OS大作業】用多執行緒統計txt檔案中字元個數(Java實現)
問題描述 給定一個txt檔案,利用不同個數的執行緒查詢檔案中某字元的個數,探究執行緒個數與查詢時間的關係。 本作業程式碼使用JAVA實現,版本為10.0.2,使用的IDE為Eclipse4.9.0. 結果測試所用的txt檔案內容為英文,編碼格式為UTF-8。 原始碼 第一版程式碼:(
sort +awk+uniq 統計檔案中出現次數最多的前10個單詞
原文地址:http://blog.sina.com.cn/s/blog_5dce657a01012ddi.html 作者:小新 例項cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sort -k1nr|head
Hadoop 統計檔案中某個單詞出現的次數
轉自:https://www.xuebuyuan.com/1270346.html 2013年10月24日 ⁄ 綜合 ⁄ 共 2628字 ⁄ 字號 小 中 大 ⁄ 評論關閉 如檔案wor
shell指令碼 統計目錄下檔案數量
1、 統計當前資料夾下檔案的個數 ls -l |grep "^-"|wc -l 2、 統計當前資料夾下目錄的個數 ls -l |grep "^d"|wc -l 3、統計當前資料夾下檔案的個數,包括子資料夾裡的 ls -lR|grep "^-"|wc -
linux統計txt檔案中單詞出現次數並排序
檔案:a.txt 任務:統計該檔案中每一個單詞出現的次數,並按照出現頻率從大到小排序 sed 's/ /\n/g' "a.txt" | sort | uniq -c | sort -nr 解析: sed替換 sed 's/被替換的字串/新字串/[替換選項]' fil
linux中sort(統計檔案中出現次數最多的前10個單詞)
例項 cat logt.log|sort -s -t '-' -k1n |awk '{print $1;}'|uniq -c|sort -k1nr|head -100 使用linux命令或者shell實現:檔案words存放英文單詞,格式為每行一個英文單詞
Linux系統中執行.sh(Shell指令碼)檔案
其中,以絕對路徑執行方法: (1)./home/test/shell/hello.sh,可以這樣執行是因為當前登入使用者是root,當前路徑是在/下,. 代表當前路徑。 (2)/home/test/shell/hello
shell 指令碼統計資料夾下所有檔案的字元數
最近寫了一些文章存放在一個資料夾下,今天想看看自己到底寫了多少內容。於是想寫一個指令碼來進行統計。最終程式碼如下: #!/bin/bash files=$(ls) all=0 for i in
做一個詞頻統計程式,該程式具有以下功能 基本要求: (1)可匯入任意英文文字檔案 (2)統計該英文檔案中單詞數和各單詞出現的頻率(次數),並能將單詞按字典順序輸出。 (3)將單詞及頻率寫入檔案。
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOExcep
用python統計檔案中各個單詞出現的次數
import string d = {} def choice(str): s = str.lower() #全部轉化為小寫 for c in range(97,123): #ASC