linux中计算文本文件中某个字符的出现次数

网友投稿 1351 2022-08-28

linux中计算文本文件中某个字符的出现次数

linux中计算文本文件中某个字符的出现次数

文章目录

​​linux中计算文本文件中某个字符的出现次数​​

​​1. 概述​​​​2.使用 `grep` 命令​​​​2.1. 不区分大小写的搜索​​​​2.2. 使用多个输入文件​​​​3.使用 `tr`命令​​​​3.1. 不区分大小写的搜索​​​​4. 使用 `awk`命令​​​​5. 性能比较​​​​6:结论​​

linux中计算文本文件中某个字符的出现次数

1. 概述

在本教程中,我们将学习使用 Linux 命令查找文本文件中特定字符的计数。假设你对常用的 Linux 命令有基本的了解,包括​​grep​​​、​​awk​​​、​​tr​​​和​​wc​​。​​rumenz.txt​​ 中有一些虚拟数据

> cat rumenz.txt rumenz.txthello world!!!!

2.使用 ​​grep​​ 命令

该​​grep​​的用于在输入文件中的给定图案的命令的搜索。让我们通过命令来使用​​grep​​ 获取字符数 :

> grep -o 'e' rumenz.txt | wc -l2

在这里,我们在文件​​rumenz.txt​​​中查找字符​​e​​​的出现次数。​​-o​​ 选项打印在所述匹配部分。现在,我们使用管道运算符将​​grep​​​命令的输出传递给​​wc​​​命令。最后,​​wc​​​命令中的​​-l​​选项计算输入字符串中的总行数。

2.1. 不区分大小写的搜索

在​​grep​​​的命令支持 ​​-i​​来进行区分大小写的搜索选项:

> grep -o -i 'l' rumenz.txt | wc -l3

2.2. 使用多个输入文件

我们可以将多个输入文件传递给​​grep​​ 命令。然后它会查看所有文件并返回在每个文件中找到的字符数总和:

> cat > dummy.txtThis is dummy text.$ grep -o -i 'e' rumenz.txt dummy.txt | wc -l2

在这里,我们已经创建了一个新的文件 ​​dummy.txt​​​文件,都执行字符计数操作​​rumenz.txt​​​和​​dummy.txt​​。请注意,我们已将两个文件作为参数传递给 grep 命令。输出包括来自两个文件的字符数总和。

3.使用 ​​tr​​命令

该​​tr​​ 是一个命令行应用程序来执行基于字符的转换。我们可以结合使用​​-c​​​和​​-d​​两个选项来获取字符数:

> tr -c -d 'l' < rumenz.txt | wc -c3

让我们首先了解上面命令中使用的选项。

​​-c​​ : 取代所有不属于第一字符集的字符​​-d​​ : 将删除集合中提到的所有字符

集合被定义为字符串。在我们的例子中,集合是一个带有单个字符​​l​​的字符串。现在,当我们将​​-c​​​ 和​​-d​​ 选项组合在一起时,它将删除除我们在集合中提到的字符之外的所有字符结果字符串将使用管道运算符传递给​​wc​​​命令。​​wc​​​命令中的​​-c​​选项将返回总字符数。

3.1. 不区分大小写的搜索

我们可以通过在集合中添加大写和小写字符来执行不区分大小写的搜索

> tr -cd 'lL' < rumenz.txt | wc -c3

4. 使用 ​​awk​​命令

在​​awk​​是一种数据驱动的编程语言的是获取输入数据,处理它,并返回所需的输出。与我们目前讨论的两种方法不同,这种方法有点难以理解。让我们看一下命令并了解它是如何工作的:

> awk -F 'e' '{s+=(NF-1)} END {print s}' rumenz.txt 2

​​awk​​​应用程序的默认字段分隔符是空格。但是这里我们使用​​-F​​​选项将字段分隔符更新为​​e​​​ 。这将在每次出现​​e​​时分隔我们的数据。为我们的数据集形成的组第一行将是​​rum​​​ ​​nz.txt​​​和第二行​​h​​​、​​llo world!!!!​​ 。现在,这个片段​​{s+=(NF-1)} END {print s}​​ 将计算生成的数据的所有部分并从中减去一(因为一个字符匹配会将数据分成两部分。)以获得所需的每行中的字符数。这个计数将被添加到每一行,最后,我们得到整个文件的总字符出现计数。

5. 性能比较

到目前为止,我们讨论的所有三种方法都执行相同的操作。但不同之处在于它们处理数据的方式。现在,对于小字符串或小文件,这些命令执行的时间几乎相同。但真正的区别是当我们的文件太大时。让我们在一个 1.1GB 的文件上运行所有三个命令并监视每个命令所花费的时间:

> ls -lah large.txt -rw-r--r--. 1 root root 1G Jun 12 10:53 large.txt> time grep -o 'e' large.txt | wc -l82256735real 0m 733suser 0m 649ssys 0m 714s> time tr -c -d 'e' > large.txt | wc -c82256735real 0m 542suser 0m 892ssys 0m 433s> time awk -Fe '{s+=(NF-1)} END {print s}' large.txt 82256735real 0m 080suser 0m 589ssys 0m 933s

​​tr​​ 命令是最快的三个拿到字符数在大型文件。

6:结论

发现​​tr​​​命令是所有三个命令中最快的,其次是 ​​awk​​​和 ​​grep​​命令。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如何中教学编程课程中学习到PHP+Redis令牌桶限流这个知识点?
下一篇:linux如何设置无密码SSH登录
相关文章

 发表评论

暂时没有评论,来抢沙发吧~