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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Ubuntu2404桌面版制作qcow2镜像

kvm 本地安装导入现有磁盘 环境&#xff1a;Ubuntu2404桌面版&#xff0c;且开启虚拟化引擎 本次实验使用本地安装的方式用centos7.9 ISO格式镜像创建一台虚拟机&#xff0c;创建后默认的磁盘格式为qcow2&#xff0c;然后对该磁盘进行压缩&#xff0c;再次使用导入现有磁盘的方…

华为战略解码-162页 八大章节 精读

该文档主要解读了华为战略解码的过程和内容&#xff0c;强调了领导力在战略管理中的重要性&#xff0c;介绍了华为战略管理的七个关键点以及领导力的七个特质。文档详细阐述了华为在战略解码过程中如何利用BLM模型等工具&#xff0c;以及如何从市场洞察、业务设计等方面制定和执…

【2024年最新】BilibiliB站视频动态评论爬虫

废话不多说&#xff0c;直接先放git仓库&#xff1a;GitHub - linyuye/Bilibili_crawler: bilibili爬虫&#xff0c;基于selenium获取oid与cookie&#xff0c;request获取api内容 〇&#xff1a;概念简述 oid&#xff1a;视频/动态的uuid&#xff0c;b站对于发布内容的通用唯…

BAPI_BATCH_CHANGE在更新后不自动更新批次特征

1、问题介绍 在CL03中看到分类特性配置了制造日期字段&#xff0c;并绑定了生产日期字段MCH1~HSDAT MSC2N修改批次的生产日期字段时&#xff0c;自动修改了对应的批次特性 但是通过BAPI&#xff1a;BAPI_BATCH_CHANGE修改生产日期时&#xff0c;并没有更新到批次特性中 2、BAPI…

SQL中的窗口函数

1.窗口函数简介 窗口函数是SQL中的一项高级特性&#xff0c;用于在不改变查询结果集行数的情况下&#xff0c;对每一行执行聚合计算或者其他复杂的计算&#xff0c;也就是说窗口函数可以跨行计算&#xff0c;可以扫描所有的行&#xff0c;并把结果填到每一行中。这些函数通常与…

转运机器人推动制造业智能化转型升级

​在当今制造业智能化转型的浪潮中&#xff0c;技术创新成为企业脱颖而出的关键。富唯转运机器人凭借一系列先进技术&#xff0c;成为智能转型的卓越之选。 一体化 AMR 控制系统是富唯的一大亮点。它采用低代码流程搭建和配置模式&#xff0c;极大地缩短了部署时间。企业无需耗…

同步异步日志系统:设计模式

设计模式是前辈们对代码开发经验的总结&#xff0c;是解决特定问题的⼀系列套路。它不是语法规定&#xff0c;⽽是⼀ 套⽤来提⾼代码可复⽤性、可维护性、可读性、稳健性以及安全性的解决⽅案。 为什么会产生设计模式这样的东西呢&#xff1f;就像人类历史发展会产生兵法。最开…

数据分析思维(五):分析方法——假设检验分析方法

数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python&#xff0c;更重要的是数据分析思维。没有数据分析思维和业务知识&#xff0c;就算拿到一堆数据&#xff0c;也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》&#xff0c;本文内容就是提取…

AppInventor2 ClientSocketAI2Ext 拓展加强版 - 为App提供TCP客户端接入,可发送二进制数据

本文介绍App Inventor 2利用拓展实现TCP/IP协议接入功能&#xff0c;作为网络客户端连接TCP服务器&#xff0c;进行数据通信&#xff08;发送/接收&#xff09;。 // ClientSocketAI2Ext 拓展现状 // 原版拓展名称为&#xff1a;com.gmail.at.moicjarod.aix&#xff0c;是能用…

Docker-构建自己的Web-Linux系统-镜像webtop:ubuntu-kde

介绍 安装自己的linux-server,可以作为学习使用&#xff0c;web方式访问&#xff0c;基于ubuntu构建开源项目 https://github.com/linuxserver/docker-webtop安装 docker run -d -p 1336:3000 -e PASSWORD123456 --name webtop lscr.io/linuxserver/webtop:ubuntu-kde登录 …

随身 WiFi 连接 X-Wrt 共享网络与 IPv6 中继配置

本文首发于只抄博客&#xff0c;欢迎点击原文链接了解更多内容。 前言 之前分享的《随身 WiFi 通过 USB 连接路由器共享网络 扩展网络覆盖范围》介绍了随身 WiFi 通过 USB 连接到路由器共享网络&#xff0c;其中留下两个小问题没有解决&#xff1a; OpenWrt 无法识别中兴微的…

3.银河麒麟V10 离线安装Nginx

1. 下载nginx离线安装包 前往官网下载离线压缩包 2. 下载3个依赖 openssl依赖&#xff0c;前往 官网下载 pcre2依赖下载&#xff0c;前往Git下载 zlib依赖下载&#xff0c;前往Git下载 下载完成后完整的包如下&#xff1a; 如果网速下载不到请使用网盘下载 通过网盘分享的文件…

家用无线路由器的 2.4GHz 和 5GHz

家中的无线路由器 WiFi 名称有两个&#xff0c;一个后面带有 “5G” 的标记&#xff0c;这让人产生疑问&#xff1a;“连接带‘5G’的 WiFi 是不是速度更快&#xff1f;” 实际上&#xff0c;这里的 “5G” 并不是移动通信中的 5G 网络&#xff0c;而是指路由器的工作频率为 5G…

【HarmonyOS NEXT】鸿蒙原生应用“上述”

鸿蒙原生应用“上述”已上架华为应用市场&#xff0c;欢迎升级了鸿蒙NEXT系统的用户下载体验&#xff0c;用原生更流畅。 个人CSDN鸿蒙专栏欢迎订阅&#xff1a;https://blog.csdn.net/weixin_44640245/category_12536933.html?fromshareblogcolumn&sharetypeblogcolumn&a…

AI开发:使用支持向量机(SVM)进行文本情感分析训练 - Python

支持向量机是AI开发中最常见的一种算法。之前我们已经一起初步了解了它的概念和应用&#xff0c;今天我们用它来进行一次文本情感分析训练。 一、概念温习 支持向量机&#xff08;SVM&#xff09;是一种监督学习算法&#xff0c;广泛用于分类和回归问题。 它的核心思想是通过…

Linux部署spring项目基础教程

目录 一、安装jdk(yum安装) 1.查看是否有jdk ​编辑 2.查找你想安装的jdk版本 3.安装你需要的版本 4.重复第一步查看版本号,看到版本号说明安装成本 二、部署服务 1.上传jar包 2.启动服务 3.脚本启动 自己搞了个服务器,部署了一个demo项目,把部署流程记录下 一、…

JS中的原型与原型链

1. 基本概念 原型&#xff08;Prototype&#xff09;&#xff1a;每个对象都有一个内部属性 [[Prototype]]&#xff0c;通常通过 __proto__ 访问&#xff08;非标准&#xff0c;但广泛支持&#xff09;。 原型链&#xff08;Prototype Chain&#xff09;&#xff1a;对象通过原…

如何从 0 到 1 ,打造全新一代分布式数据架构

导读&#xff1a;本文从 DIKW&#xff08;数据、信息、知识、智慧&#xff09; 模型视角出发&#xff0c;探讨数字世界中数据的重要性问题。接着站在业务视角&#xff0c;讨论了在不断满足业务诉求&#xff08;特别是 AI 需求&#xff09;的过程中&#xff0c;数据系统是如何一…

Docker完整技术汇总

Docker 背景引入 在实际开发过程中有三个环境&#xff0c;分别是&#xff1a;开发环境、测试环境以及生产环境&#xff0c;假设开发环境中开发人员用的是jdk8&#xff0c;而在测试环境中测试人员用的时jdk7&#xff0c;这就导致程序员开发完系统后将其打成jar包发给测试人员后…

华为 AI Agent:企业内部管理的智能变革引擎(11/30)

一、华为 AI Agent 引领企业管理新潮流 在当今数字化飞速发展的时代&#xff0c;企业内部管理的高效性与智能化成为了决定企业竞争力的关键因素。华为&#xff0c;作为全球领先的科技巨头&#xff0c;其 AI Agent 技术在企业内部管理中的应用正掀起一场全新的变革浪潮。 AI Ag…