Linux 实用命令 grep、wc

grep 命令详解

grep [选项] ‘模式’ 文件名

grep [参数] [选项] [操作对象]

grep ‘error’ -c 5 --color info.log

[模式]:是要搜索的字符串或正则表达式。

[选项]:是可选的,用于定制grep的行为。

[操作对象]:是要搜索的文件名或目录名。

常用选项

-i:忽略大小写。

-v:反向匹配,选择不匹配的行。

-r 或 -R:递归搜索,不仅在当前目录的文件中搜索,还在子目录的文件中搜索。

-l:只输出包含匹配行的文件名。

-n:显示匹配行及其行号。

-c:只输出匹配的行数。

-o:只输出匹配的部分。

-A num:显示匹配行之后的num行。

-B num:显示匹配行之前的num行。

-C num 或 --context=num:显示匹配行前后各num行。

-E 使用扩展正则,等价于egrep。

-f 文件:从文件中获取模式。

–color 或 --colour:高亮显示匹配部分。

普通正则表达式

^ :以某字符开头
$ :以某字符结尾
. :匹配除换行符之外的任意单个字符
* :匹配前导字符的零次或者多次
[] :某组字符串的任意一个字符
[^] :取反
[a-z] : 匹配小写字母
[A-Z] :匹配大写字母
[a-z[A-Z]: 匹配字母
[0-9] :匹配数字
\ :转义富符
() :分组

拓展正则表达式

{} :匹配的次数
{n} :匹配n次
{n,} :至少匹配n次
{n,m} :匹配n到m次
{,m} :最多匹配m次
+ :匹配至少一个或多次前导字符
? :匹配一个或者零个前导字符
| :或

正则与grep实战

  1. 在info.log文件中,匹配含有’error’的行
grep 'error' info.log
  1. 统计在info.log文件中含有’error’的行数
grep 'error' info.log | wc -l

wc 命令详解

wc(word count)命令是 Linux 和类 Unix 系统中的一个强大工具,用于统计文件中的行数、单词数、字节数和字符数。通过不同的选项,用户可以自定义统计的内容。wc 命令不仅适用于单个文件,还可以处理多个文件,并且可以通过管道从标准输入读取数据。

基本语法

wc [选项] [文件...]

常用选项

  1. -l 或 --lines:

统计文件的行数。

wc -l filename
  1. -w 或 --words:

统计文件的单词数。单词是指由空格、制表符或换行符分隔的非零长度字符序列。

wc -w filename
  1. -c 或 --bytes:

统计文件的字节数。字节数是指文件中所有字符占用的字节数。

wc -c filename
  1. -m 或 --chars:

统计文件的字符数。字符数是指文件中所有字符的数量,包括多字节字符。

wc -m filename
  1. -L 或 --max-line-length:

显示文件中最长行的长度。

wc -L filename
  1. 无选项:

默认情况下,wc 命令会同时显示行数、单词数和字节数。

wc filename

用法示例

统计多个文件的行数:

wc -l file1 file2 file3

统计目录下所有文件的行数:

wc -l *

统计目录下所有 .txt 文件的行数:

wc -l *.txt

统计文件的行数并重定向输出:

wc -l filename > line_count.txt

统计文件的单词数并追加到另一个文件:

wc -w filename >> word_count.txt

统计多个文件的总行数:

wc -l file1 file2 file3 | awk '/total/ {print $1}'

统计文件中包含特定字符串的行数:

grep "keyword" filename | wc -l

统计文件中每行的平均单词数:

wc -w filename | awk '{total_words=$1}' && wc -l filename | awk '{total_lines=$1; print total_words/total_lines}'

统计文件中每个单词出现的次数:

tr ' ' '\n' < filename | sort | uniq -c | sort -nr

统计文件中每个字符出现的次数:

fold -w1 filename | sort | uniq -c | sort -nr

统计文件中每个单词的长度:

tr ' ' '\n' < filename | awk '{print length, $0}' | sort -n

统计文件中每个单词的长度分布:

tr ' ' '\n' < filename | awk '{print length}' | sort | uniq -c

统计文件中每个字符的类型(字母、数字、其他):

fold -w1 filename | awk '{if ($1 ~ /[a-zA-Z]/) print "Letter"; else if ($1 ~ /[0-9]/) print "Number"; else print "Other"}' | sort | uniq -c

实际应用示例

统计代码行数:

统计某个项目中的代码行数,排除空行和注释行。

grep -vE '^\s*$|^#' codefile.c | wc -l

统计日志文件中的错误数量:

统计日志文件中包含 “ERROR” 的行数。

grep "ERROR" logfile.log | wc -l

统计文本文件中的唯一单词数:

统计文本文件中的唯一单词数。

tr ' ' '\n' < textfile.txt | sort | uniq | wc -l

统计多个文件的总字节数:

统计多个文件的总字节数。

wc -c file1 file2 file3 | awk '/total/ {print $1}'

统计目录下所有文件的总单词数:

统计目录下所有文件的总单词数。

wc -w * | awk '/total/ {print $1}'

统计文件中每个单词的频率:

统计文件中每个单词的频率,并按频率降序排列。

tr ' ' '\n' < filename | sort | uniq -c | sort -nr

统计文件中每个字符的频率:

统计文件中每个字符的频率,并按频率降序排列。

fold -w1 filename | sort | uniq -c | sort -nr

统计文件中每个单词的长度分布:

统计文件中每个单词的长度分布,并按长度升序排列。

tr ' ' '\n' < filename | awk '{print length, $0}' | sort -n

统计文件中每个单词的长度分布:

统计文件中每个单词的长度分布,并按长度升序排列。

tr ' ' '\n' < filename | awk '{print length}' | sort | uniq -c

统计文件中每个字符的类型:

统计文件中每个字符的类型(字母、数字、其他),并按类型分类。

fold -w1 filename | awk '{if ($1 ~ /[a-zA-Z]/) print "Letter"; else if ($1 ~ /[0-9]/) print "Number"; else print "Other"}' | sort | uniq -c

注意事项

  1. 文件大小:对于非常大的文件,wc 命令可能会消耗较多的内存和 CPU 资源。在这种情况下,可以考虑使用流式处理工具(如 awk)来优化性能。
  2. 权限问题:如果文件没有读取权限,wc 命令会报错。确保你有适当的权限来读取文件。
  3. 输出重定向:使用 > 重定向输出时,会覆盖目标文件的内容。使用 >> 追加内容时,会在目标文件末尾添加内容。
  4. 多文件统计:当统计多个文件时,wc 命令会为每个文件单独输出统计结果,并在最后一行显示总计。

总结

wc 命令是一个非常实用的工具,适用于多种文件统计场景。更灵活地使用 wc 命令来统计文件的行数、单词数、字节数和字符数。无论是简单的文件统计还是复杂的文本处理,wc 命令都能提供强大的支持。

管道符

管道符 “ | ” ,左边的输出结构,作为右边的输入。

统计info.log文件中ccf5928453f34df9出现的行数

grep 'ccf5928453f34df9' info.log | wc -l

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64201.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Transformer】深入浅出自注意力机制

写在前面&#xff1a;博主本人也是刚接触计算机视觉领域不久&#xff0c;本篇文章是为了记录自己的学习&#xff0c;大家一起学习&#xff0c;有问题欢迎大家指出。&#xff08;博主本人的习惯是看文章看到不懂的有立马去看不懂的那块&#xff0c;所以博文可能内容比较杂&#…

HarmonyOS NEXT 实战之元服务:静态案例效果---教育培训服务

背景&#xff1a; 前几篇学习了元服务&#xff0c;后面几期就让我们开发简单的元服务吧&#xff0c;里面丰富的内容大家自己加&#xff0c;本期案例 仅供参考 先上本期效果图 &#xff0c;里面图片自行替换 效果图1完整代码案例如下&#xff1a; import { authentication } …

互联网视频云平台EasyDSS无人机推流直播技术如何助力野生动植物保护工作?

在当今社会&#xff0c;随着科技的飞速发展&#xff0c;无人机技术已经广泛应用于各个领域&#xff0c;为我们的生活带来了诸多便利。而在动植物保护工作中&#xff0c;无人机的应用更是为这一领域注入了新的活力。EasyDSS&#xff0c;作为一款集视频处理、分发、存储于一体的综…

51c视觉~YOLO~合集8

我自己的原文哦~ https://blog.51cto.com/whaosoft/12897680 1、Yolo9 1.1、YOLOv9SAM实现动态目标检测和分割 主要介绍基于YOLOv9SAM实现动态目标检测和分割 背景介绍 在本文中&#xff0c;我们使用YOLOv9SAM在RF100 Construction-Safety-2 数据集上实现自定义对象检测模…

Docker Container 可观测性最佳实践

Docker Container 介绍 Docker Container&#xff08; Docker 容器&#xff09;是一种轻量级、可移植的、自给自足的软件运行环境&#xff0c;它在 Docker 引擎的宿主机上运行。容器在许多方面类似于虚拟机&#xff0c;但它们更轻量&#xff0c;因为它们不需要模拟整个操作系统…

气相色谱-质谱联用分析方法中的常用部件,分流平板更换

分流平板&#xff0c;是气相色谱-质谱联用分析方法中的一个常用部件&#xff0c;它可以实现气相色谱柱流与MS检测器流的分离和分流。常见的气质联用仪分流平板有很多种&#xff0c;如单层T型分流平板、双层T型分流平板、螺旋分流平板等等。 操作视频http://www.spcctech.com/v…

易基因: BS+ChIP-seq揭示DNA甲基化调控非编码RNA(VIM-AS1)抑制肿瘤侵袭性|Exp Mol Med

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 肝细胞癌&#xff08;hepatocellular carcinoma&#xff0c;HCC&#xff09;早期复发仍然是一个具有挑战性的领域&#xff0c;其中涉及的机制尚未完全被理解。尽管微血管侵犯&#xff08…

鸿蒙系统文件管理基础服务的设计背景和设计目标

有一定经验的开发者通常对文件管理相关的api应用或者底层逻辑都比较熟悉&#xff0c;但是关于文件管理服务的设计背景和设计目标可能了解得不那么清楚&#xff0c;本文旨在分享文件管理服务的设计背景及目标&#xff0c;方便广大开发者更好地理解鸿蒙系统文件管理服务。 1 鸿蒙…

Doris 数据库外部表-JDBC 外表,Oracle to Doris

简介 提供了 Doris 通过数据库访问的标准接口 (JDBC) 来访问外部表&#xff0c;外部表省去了繁琐的数据导入工作&#xff0c;让 Doris 可以具有了访问各式数据库的能力&#xff0c;并借助 Doris 本身的 OLAP 的能力来解决外部表的数据分析问题&#xff1a; 支持各种数据源接入…

分布式 IO 模块助力冲压机械臂产线实现智能控制

在当今制造业蓬勃发展的浪潮中&#xff0c;冲压机械臂产线的智能化控制已然成为提升生产效率、保障产品质量以及增强企业竞争力的关键所在。而分布式 IO 模块的应用&#xff0c;正如同为这条产线注入了一股强大的智能动力&#xff0c;开启了全新的高效生产篇章。 传统挑战 冲压…

深度学习中的并行策略概述:4 Tensor Parallelism

深度学习中的并行策略概述&#xff1a;4 Tensor Parallelism 使用 PyTorch 实现 Tensor Parallelism 。首先定义了一个简单的模型 SimpleModel&#xff0c;它包含两个全连接层。然后&#xff0c;本文使用 torch.distributed.device_mesh 初始化了一个设备网格&#xff0c;这代…

企业销售人员培训系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库…

自然语言处理与知识图谱的融合与应用

目录 前言1. 知识图谱与自然语言处理的关系1.1 知识图谱的定义与特点1.2 自然语言处理的核心任务1.3 二者的互补性 2. NLP在知识图谱构建中的应用2.1 信息抽取2.1.1 实体识别2.1.2 关系抽取2.1.3 属性抽取 2.2 知识融合2.3 知识推理 3. NLP与知识图谱融合的实际应用3.1 智能问答…

CSS(三)盒子模型

目录 Content Padding Border Margin 盒子模型计算方式 使用 box-sizing 属性控制盒子模型的计算 所有的HTML元素都可以看作像下图这样一个矩形盒子&#xff1a; 这个模型包括了四个区域&#xff1a;content&#xff08;内容区域&#xff09;、padding&#xff08;内边距…

基于NodeMCU的物联网窗帘控制系统设计

最终效果 基于NodeMCU的物联网窗帘控制系统设计 项目介绍 该项目是“物联网实验室监测控制系统设计&#xff08;仿智能家居&#xff09;”项目中的“家电控制设计”中的“窗帘控制”子项目&#xff0c;最前者还包括“物联网设计”、“环境监测设计”、“门禁系统设计计”和“小…

有没有免费提取音频的软件?音频编辑软件介绍!

出于工作和生活娱乐等原因&#xff0c;有时候我们需要把音频单独提取出来&#xff08;比如歌曲伴奏、人声清唱等、乐器独奏等&#xff09;。要提取音频必须借助音频处理软件&#xff0c;那么有没有免费提取音频的软件呢&#xff1f;下面我们将为大家介绍几款免费软件&#xff0…

【保姆式】python调用api通过机器人发送文件到飞书指定群聊

当前飞书webhook机器人还不支持发送文件类型的群消息&#xff0c;它目前仅支持文本&#xff0c;富文本&#xff0c;卡片等文字类型的数据。 我们可以申请创建一个机器人应用来实现群发送文件消息。 创建飞书应用 创建飞书应用、配置权限、添加机器人 来到飞书开发者后台 创建…

GitLab 服务变更提醒:中国大陆、澳门和香港用户停止提供服务(GitLab 服务停止)

目录 前言 一. 变更详情 1. 停止服务区域 2. 邮件通知 3. 新的服务提供商 4. 关键日期 5. 行动建议 二. 迁移指南 三. 注意事项 四. 相关推荐 前言 近期&#xff0c;许多位于中国大陆、澳门和香港的 GitLab 用户收到了一封来自 GitLab 官方的重要通知。根据这封邮件…

【Agent】AutoGen Studio2.0开源框架-UI层环境安装+详细操作教程(从0到1带跑通智能体AutoGen Studio)

&#x1f4a5; 欢迎来到我的博客&#xff01;很高兴能在这里与您相遇&#xff01; 首页&#xff1a;GPT-千鑫 – 热爱AI、热爱Python的天选打工人&#xff0c;活到老学到老&#xff01;&#xff01;&#xff01;导航 - 人工智能系列&#xff1a;包含 OpenAI API Key教程, 50个…

三层交换机配置

一&#xff0c;三层交换 概念&#xff1a;三层交换技术就是&#xff1a;二层交换技术三层转发技术(路由器功能)。它解决了局域网中网段划分之后&#xff0c;网段中子网必须依赖路由器进行管理的局面&#xff0c;解决了传统路由器低速&#xff0c;复杂所造成的网络瓶颈问题。 …