linux出現次數
① linux命令 統計文件中數據出現次數
文件:
[root@hunt1574 dlog]# cat a2ps.txt
# Something like `#{lp.hook} lp #{lp.options} -d'
# or `#{lp.hook} lpr #{lp.options} -P'.
[root@hunt1574 dlog]# grep -Eo '\<lp\>' a2ps.txt | wc -l
9
單純的grep 是針對行處理的,看下面的例子就明白了:
[root@hunt1574 dlog]# grep lp a2ps.txt
# Something like `#{lp.hook} lp #{lp.options} -d'
# or `#{lp.hook} lpr #{lp.options} -P'.
Variable: lp #{lp.hook} lp #{lp.options} -d
[root@hunt1574 dlog]# grep lp a2ps.txt | wc -l
3
文件夾:
[root@hunt1574 bin]# ls -l result*
-rw-r--r-- 1 root root 16512 Aug 3 16:55 result.log
-rw-r--r-- 1 root root 500 Aug 3 16:55 result.txt
[root@hunt1574 bin]# ls -l | grep -v ^d | grep -c result
2
② 在Linux的命令行中實現字元出現頻率統計的方法
在Linux的命令行中實現字元出現頻率統計,可以通過以下方法進行:
1. 統計單詞出現頻率
- 使用wc命令可以計算文件中的字數,但為得到具體單詞的頻率,需要結合其他命令。
- 示例腳本:cat man.txt | tr ' ' ' ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | grep -v '[^a-z]' | sort | uniq -c | sort -rn | head。
- cat man.txt:讀取文件內容。
- tr ' ' ' ':將空格替換為換行符,使每個單詞獨佔一行。
- tr '[:upper:]' '[:lower:]':將所有大寫字母轉換為小寫,以統一統計。
- tr -d '[:punct:]':刪除標點符號。
- grep -v '[^a-z]':過濾掉非字母字元。
- sort:排序。
- uniq -c:統計相同單詞的出現次數。
- sort -rn:按出現次數降序排序。
- head:顯示前N個結果。
2. 統計單個字元出現頻率
- 示例腳本:fold -w1 man.txt | sort | uniq -c | sort -rn | head。
- fold -w1 man.txt:將文件內容按列折疊,每列一個字元。
- sort、uniq -c、sort -rn、head:同上,用於統計和排序字元頻率。
3. 區分大小寫統計字元頻率
- 示例腳本:fold -w1 man.txt | sort | tr '[:lower:]' '[:upper:]' | uniq -c | sort -rn | head -20。
- 在統計前,使用tr '[:lower:]' '[:upper:]'將所有字元轉換為大寫。
4. 去除標點符號後統計字元頻率
- 示例腳本:fold -w1 man.txt | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -20。
- 在轉換為大寫後,使用tr -d '[:punct:]'刪除標點符號。
5. 統計多個文件中字元頻率
- 示例腳本:cat *.txt | fold -w1 | tr '[:lower:]' '[:upper:]' | sort | tr -d '[:punct:]' | uniq -c | sort -rn | head -8。
- 使用cat *.txt讀取多個文件內容。
- 後續步驟同上,用於統計字元頻率。
6. 生成罕見的長單詞列表
- 示例腳本:cat man.txt | tr ' ' ' ' | tr '[:upper:]' '[:lower:]' | tr -d '[:punct:]' | tr -d '[0-9]' | sort | uniq -c | sort -n | grep -E '.{10,}' | head。
- 使用grep -E '.{10,}'匹配長度至少為10的單詞。
- sort -n:按出現次數升序排序。
以上方法展示了在Linux命令行中如何靈活地結合多個命令來實現復雜的文本處理任務,如統計字元和單詞的出現頻率。
③ Linux正則表達式教程:Grep Regex示例
正則表達式是特殊字元,可幫助搜索數據,匹配復雜模式。正則表達式縮寫為「regexp」或「regex」。
為了便於理解,讓我們逐一學習不同類型的正則表達式。
[TOC]
一些常用的正則表達式命令是tr,sed,vi和grep。下面列出了一些基本的正則表達式。
我們來看一個例子吧。
執行cat示例以查看現有文件的內容
搜索包含字母'a'的內容。
' ^ '匹配字元串的開頭。讓我們搜索一下STARTS的內容
僅過濾以字元開頭的行。將忽略開頭不包含字元「a」的行。
讓我們看看另一個例子 -
僅選擇那些以 $ 結尾的行
這些表達式告訴我們字元串中字元的出現次數。他們是
例:
過濾掉包含字元'p'的所有行
我們想要檢查字元'p'是否在字元串中依次出現2次。為此,語法將是:
注意:您需要使用這些正則表達式添加-E。
這些正則表達式包含多個表達式的組合。他們之中有一些是:
例:
搜索所有字元't'
假設我們要過濾字元'a'在字元't'之前的行
我們可以使用命令
大括弧擴展的語法是花括弧「{}」內的序列或逗號分隔的項目列表。序列中的起始和結束項由兩個句點「..」分隔。
一些例子:
在上面的示例中,echo命令使用大括弧擴展創建字元串。