Linux 在文件中统计关键字出现的次数
摘要:在当前文件或者当前目录下所有文件中,使用Linux命令grep、awk、sed、rg或者cat统计关键字出现的次数。
问题背景
在当前文件或者当前目录下所有文件中,统计指定关键字出现的次数。
在《Linux 在多个文件中搜索关键字》中,小编分享了如何使用grep或者rg在当前目录下所有文件中查找关键字。本文分享在当前文件或者当前目录下所有文件中,如何使用grep、awk、sed、rg或者cat统计关键字出现的次数。
解决办法
在Linux中,可以使用命令行工具如grep和wc来统计日志文件中某个关键词出现的次数。以下是一个简单的统计方法,当然,如果使用阿里云,可以使用更高效的SLS进行统计,这里假定没有统计工具。
假设待统计关键词的目标文件是/data/logs/logFile.txt,目标目录是/data/logs/,待统计的关键词是 keyword。
使用grep和wc命令
grep -o 'keyword' /data/logs/logFile.txt | wc -l
此命令会在logFile.txt中查找关键词keyword出现的次数,-o选项会确保只输出匹配的行。
命令wc -l会计算匹配行的数量,也就是keyword出现的次数。wc命令用于统计字数、行数、字符数。-l选项用于统计行数,这里每匹配一次关键词会被认为是一行。
使用awk命令模式匹配
可以在awk中定义变量。例如,在文件中统计关键词keyword出现的行数:
awk '{count += gsub(/keyword/, "&")} END {print count}' logFile.txt
这段命令借助awk,通过函数gsub统计关键词keyword出现的次数,然后将其累加,最后输出总数。也可以使用如下简易版语法糖:
awk '/keyword/ {count++} END {print count}' logFile.txt
如果打印匹配到 "keyword" 的所有行,语法糖如下:
awk '/keyword/ { print $0 }' logFile.txt
AWK 是一种灵活且强大的工具,适用于各种文本和数据处理任务。工作原理如下:当读到第一行时,匹配条件,然后执行指定动作,再接着读取第二行数据处理,不会默认输出,以此循环,逐行读取文本直到文本末行。如果没有定义匹配条件,那么默认匹配所有数据行。awk隐含循环动作,条件匹配多少次就会执行多少次匹配。
使用sed和wc命令
sed -n 's/.*$(keyword)$.*/\1/p' /data/logs/logFile.txt | wc -l
这个命令使用sed命令,在logFile中查找并打印keyword出现的次数。
使用rg命令
在Linux中,可以使用 rg(Ripgrep)来统计关键词出现的次数。rg 是一个快速搜索工具,酷似 grep,但通常速度更快。要统计某个关键词在一个文件中出现的次数,可以结合wc使用:
rg -o "keyword" /data/logs/logFile.txt | wc -l
-o 选项确保每次匹配只输出关键词本身。
cat和wc
语法类似rg:
cat /data/logs/logFile.txt |grep 'keyword'| wc -l
统计目录中关键词出现总次数
如果需要在目录/data/logs下,统计keyword出现的总次数,可以使用如下命令:
awk '{count += gsub(/keyword/, "&")} END {print count}' /data/logs/*
* 代表目录下所有文件。grep、awk 和sed也可以类似语法糖,不再赘述。
在每个文件中统计关键词出现次数
有时候需要指定目录下,统计每个文件中关键词出现次数,这时可以使用如下命令:
grep -c 'keyword' /data/logs/ -R
此命令遍历/data/logs/下所有的文件,并统计关键词在每个文件中出现的次数。-R表示遍历目录下所有文件。
总的来说,grep命令是一个强大而灵活的工具,它可以帮助我们在海量文件中快速找到包含特定关键词的内容。我们通过掌握grep命令的基本语法和各种选项,可以更加高效地处理文件和数据,从而更好地应对日常工作和研究中的挑战。无论你是在进行代码调试、文档编辑还是数据分析,grep命令都将成为你不可或缺的得力助手。
小结
Linux命令grep、awk、sed、rg或者cat都可以帮助你快速统计出目录或者文件中关键词的出现次数。如果你需要进一步的帮助或有其它问题,欢迎在下方评论区留言!Wiener会逐一答复。
Linux 在文件中统计关键字出现的次数的更多相关文章
- linux所有文件中查找关键字的命令
grep 192.168.1.1 * -r 在所有文件中查找192.168.1.1
- dos2unix,去掉Linux下文件中的^M
Windows系统下使用VS2010编写好的CPP文件,想放到Linux上进行编译.发现Linux上文件中的每行代码末尾都跟着^M这个符号. 为什么同一份文件在windows上和Linux上显示的不一 ...
- 统计一个文件中出现字符'a'的次数
# -*- coding: utf-8 -*- #python 27 #xiaodeng #统计一个文件中出现字符'a'的次数 #http://www.cnblogs.com/hongten/p/ho ...
- Java笔记13:统计文件中每个字符出现的次数
一.代码实现 import java.io.*; import java.util.*; /** 功能:统计文件中每个字符出现的次数 思路: 1.定义字符读取(缓冲)流 2.循环读取文件里的字符,用一 ...
- python 在一个文件夹的所有文件中查找关键字
python 在一个文件夹的所有文件中查找关键字 import os,shutil import re key='Hello' re_parttern=re.compile(r''+key,re.DO ...
- linux命令统计文件中某个字符串出现的次数
1.使用grep linux grep命令在我的随笔linux分类里有过简单的介绍,这里就只简单的介绍下使用grep命令统计某个文件这某个字符串出现的次数,首先介绍grep命令的几个参数,详细参数请自 ...
- Linux - Shell - 在多个文件中查找关键字
1. 概述 在多个文件中 查找内容 2. 想干啥 目的 在 多个文件 中, 查找内容 准备 之前在 单个文件里 查找过内容 工具 awk 前提 文件有固定格式 查找时有字段的要求 例子 # print ...
- 自定义VBS脚本(统计在指定文件中搜索字符串出现的次数)
'=========================================================================='' VBScript Source File - ...
- linux grep命令(linux在文件中搜索内容)
转自:https://www.cnblogs.com/end/archive/2012/02/21/2360965.html linux grep命令 1.作用Linux系统中grep命令是一种强大的 ...
- linux向文件中添加数据,数据被追加到了上一行的行尾
当我们在windows上新建了文件,并且要上传到linux上时,一定要在文件后加上空格,否则就会出现标题上讲的,数据被追加到了上一行的行尾,而不是新起一行,但是如果是在linux上新建的文件,则没有这 ...
随机推荐
- iview weapp输入组件input事件顺序
做小程序,使用ivew weapp组件框架,同时用到了i-input和i-modal,更具体说,就是在modal里面放置了input,填写数据后点击确定,实现提交数据. 出现点小问题,发现是事件顺序导 ...
- Ansible管理密码库文件
ansible可能需要访问密码或API密钥等敏感数据,以便能配置受管主机.通常,此信息可能以纯文本形式存储在清单变量或其他Ansible文件中.但若如此,任何有权访问Ansible文件的用户或存储,这 ...
- Thinkphp8多语言模式,语言包变量占位符实现方法。
主要实现原理是sprintf()函数,更多占位符写法可以参考sprintf()的介绍. zh-cn.php ...... // 变量用 s% 作为占位符 'sold_books' => 'Sol ...
- CentOS7图形化界面和命令行界面之间的转换
最近在学习Lunix操作系统下的CentOS7系统,参考了网页上大多数的资料并进行在自己的亲身实践,最终想要记录一下我在CentOS7系统中有关命令行和图形化界面之间的转换.1.查看当前的默认界面形式 ...
- 使用LLaMA-Factory训练LLM大模型并用ollama调用
环境搭建 系统环境 需要Nvidia显卡,至少8G显存,且专用显存与共享显存之和大于20G 建议将非安装版的环境文件都放到非系统盘,方便重装或移植 以Windows11为例,非安装环境文件都放在 E ...
- Windows 提权-手工枚举
本文通过 Google 翻译 Manual Enumeration – Windows Privilege Escalation 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别 ...
- Netty源码—9.性能优化和设计模式
大纲 1.Netty的两大性能优化工具 2.FastThreadLocal的实现之构造方法 3.FastThreadLocal的实现之get()方法 4.FastThreadLocal的实现之set( ...
- 包装类面试题--java进阶day05
1.面试题 如下两个输出,请问分别是true还是false呢? 答案: 当范围在-128~127时,对象相同就会返回true 在讲解这个问题之前,先了解自动装箱的原理 2.自动装箱的原理 自动装箱,就 ...
- nodejs中使用websockets
websockets介绍 websockets这个新协议为客户端提供了一个更快.更有效的通信线路.像HTTP一样,websockets运行在TCP连接之上,但是它们更快,因为我们不必每次都打开一个新的 ...
- 海康摄像头SDK在Linux、windows下的兼容问题
零.前言 最近一直在做人脸识别相关的应用. 主要就是使用海康的摄像头抓拍.录制视频,使用虹软的sdk进行人脸识别,使用jna调用这些sdk. 海康的sdk在使用时遭遇了很多问题,主要问题就是windo ...