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命令使用大括号扩展创建字符串。