Linux 统计文件中某个字符串出现的次数(2种方法,推荐第二种)

一、grep+wc

1、单个字符串

grep -o targetStr filename | wc -l

备注:单个字符串可以不加引号
统计404出现的次数

2、多个字符串

grep -o targetStr_1\|targetStr_2\|targetStr_3…… filename | wc -l

备注:必须加引号(单、双都可以)
在这里插入图片描述
如果不加引号,结果是不正确的
在这里插入图片描述

grep -o 一条数据里面有多个相同,会统计相同的次数
grep 一条数据里面有多个相同,会统计一次次数

二、awk

awk -v RS="@#$j" '{print gsub(/targetStr/,"&")}' filename

在这里插入图片描述

awk  '{s+=gsub(/targetStr/,"&")}END{print s}' filename

在这里插入图片描述

小文件第一种方法最快0.003s,awk最快0.002s,一般都是比前者快
当文件大的时候awk优势会更加明显。

在这里插入图片描述

### 查找并处理包含特定字符串文件 #### 使用 `grep` 命令查找包含特定字符串的行 为了找到文件中包含特定字符串的所有行,可以使用 `grep` 工具。此命令不仅能够高效地搜索文本模式,还可以结合其他选项来增强功能。 例如,在名为 `test.log` 的日志文件里寻找含有 `'WARN'` 字符串的每一行: ```bash [root@localhost xz]$ grep 'WARN' test.log ``` 这会打印出所有匹配该条件的行[^2]。 #### 统计字符串出现次数 如果目标是统计某个字符串在一个或多个文件内的具体出现频率,则可以在上述基础上加上 `-o` 和 `wc -l` 参数组合实现这一目的: ```bash grep -o 'target_string' filename | wc -l ``` 这里的 `-o` 让 `grep` 只输出被匹配到的部分而非整行;而管道后面的 `wc -l` 则用来计算这些部分的数量,即为目标字符串的实际发生次数[^1]。 #### 多重条件筛选——同时满足几个不同关键词的情况 当需要定位那些既含第一个关键又含第二个甚至更多个不固定位置关系的关键时,可以通过如下方式构建更复杂的查询语句: ```bash find . -type f -print0 | xargs -0 egrep 'keyword1|keyword2' ``` 这段脚本先利用 `find` 定位所有常规文件并将它们零终止传递给 `xargs`, 后者再调用带有正则表达式的 `egrep` 对各候选对象做进一步过滤[^3]. #### 跨多种文档格式检索(如 PDF) 对于非纯文本类型的电子档比如 PDF ,可借助专门转换工具配合标准 Unix 实用程序完成任务。下面的例子展示了怎样遍历当前目录树下的每一个 `.pdf` 文件,并检测其中是否存在 `"rockchip"` 这样的标记词: ```bash find . -name "*.pdf" -exec sh -c 'pdftotext "{}" - | grep -H --label="{}" "rockchip"' \; ``` 这条指令链先是通过 `find` 找到了符合条件的目标集合,接着运用匿名 shell 函数执行两步动作:一是把 PDF 内容转成流式文本形式;二是由 `grep` 寻觅指定词条的位置[^4].
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值