当前位置: 首页 > news >正文

shell 三剑客-grep

shell 三剑客是指在Linux/Unix系统下使用最广泛的命令行工具:grep、sed、awk
三剑客都是文本处理工具 可用于搜索、替换和处理大量文本数据,三者通常是和正则表达式一起使用
正则表达式

\       转义符,将特殊字符进行转义,忽略其特殊意义
^       匹配行首,awk中,^则是匹配字符串的开始 
$       匹配行尾,awk中,$则是匹配字符串的结尾
^$      表示空行
.       匹配除换行符\n之外的任意单个字符
.*      匹配所有
[ ]     匹配包含在[字符]之中的任意一个字符
[^ ]    匹配[^字符]之外的任意一个字符
[ - ]   匹配[]中指定范围内的任意一个字符
?       匹配之前的项1次或者0次
+       匹配之前的项1次或者多次
*       匹配之前的项0次或者多次, .*
()      匹配表达式,创建一个用于匹配的子串 
{ n }   匹配之前的项n次,n是可以为0的正整数
{n,}    之前的项至少需要匹配n次
{n,m}   指定之前的项至少匹配n次,最多匹配m次,n<=m
|       交替匹配|两边的任意一项ab(c|d)匹配abc或abd

三剑客–grep
grep 擅长查找过滤
可以通过grep --help 查看
常用参数


-i:忽略大小写
-l:只输出包含匹配字符的文件名
-n:显示匹配行及行号
-v:显示不包含匹配文本的所有行
-o:只显示匹配字符串的部分
-c:只输出匹配行的计数
-r:递归查询
-h:不显示匹配行所在文件名
-H:同时显示行和文件名
-A<显示列数>或--after-context=<显示列数>:显示匹配行下?行
-B<显示列数>或--before-context=<显示列数>:显示匹配行上?行
-C<显示列数>或--context=<显示列数>或-<显示列数>:显示匹配行前后?行
-E:扩展正则表达式
-F:固定字符串搜索
-G:基本正则表达式
-q:静默模式,不输出任何信息,通过echo $?查看是否匹配到指定字符串
-s:不显示不存在或无匹配文本的错误信息-w, --word-regexp         强制 PATTERN 仅完全匹配字词-x, --line-regexp         强制 PATTERN 仅完全匹配一行-z, 一个 0 字节的数据行,但不是空行

1.过滤以#开头的行和空白行
egrep 是grep 的变体 默认使用扩展正则表达式,使egrep 处理复杂模式更灵活
grep 默认使用基础表达式 -E 默认使用基础正则表达式
grep 通常更快

egrep -v -n "^#|^$" 文件名称

在这里插入图片描述

grep -E -v -n "^#|^$" 文件名称

在这里插入图片描述
匹配任意字符,过滤空行

grep -n "." 文件名称

在这里插入图片描述
找到.sh文件 查找包含for关键的文件显示行数
.表示当前目录
xargs 能够捕获一个命令的输出,然后传递给另外一个命令。由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令

 find . -name "*.sh" | xargs grep  -in "for*"

在这里插入图片描述
查找重复连续出现2次以上,必须是连续哦

 grep -Eni "(重复){2,}" 03.sh

在这里插入图片描述
错误语法:缺少(),如果是查找多个字符,需要(),单个字符可不需要
在这里插入图片描述在这里插入图片描述
多个关键字组合使用时
表达and关系,使用 .*
表达or关系,使用 |

#两个关键字的顺序不是固定的,可以是乱序的,如果要固定就只写"测试.*重复" 或者"重复.*测试"grep -Eni "测试.*重复|重复.*测试" 03.sh

在这里插入图片描述

 grep -Eni "echo|参数" 03.sh

在这里插入图片描述
查看最近有哪些IP以root身份登陆过我们的机器,统计每个IP登陆的次数。我们的思路如下:

1.通过last列出最近登陆系统的所有用户。
2.过滤出以root登陆系统的IP。
3.过滤出远程登陆的IP。
4.统计出每个IP登陆的次数。
uniq -c 统计出现的次数

#注意:'{print $3}' 使用的单引号
last |grep "root" |awk '{print $3}'|sort | uniq -c

在这里插入图片描述

相关文章:

  • SpringSecurity-入门代码
  • 【Linux】如何创建yum 组(yum groups)
  • 计算机类期刊含金量横纵向对比(一)
  • 计算机网络 —— 运输层(UDP和TCP)
  • 面试专区|【32道HDFS高频题整理(附答案背诵版)】
  • 2024 年 Python 基于 Kimi 智能助手 Moonshot Ai 模型搭建微信机器人(更新中)
  • 003.Linux SSH协议工具
  • 工具清单 - CI CD
  • GaussDB技术解读——GaussDB架构介绍(五)
  • 如何快速翻译pdf英文论文(5分钟就可以翻译一篇几十页的英文论文)
  • AI智能盒子助力中钢天源设备工厂升级安全防护
  • Docker 命令大全
  • Pgsql数据库之Linux环境备份Windows环境还原
  • 浅谈Java23种设计模式之结构型模式的几种使用场景
  • 计算机专业毕设-springboot论坛系统
  • 网络传输文件的问题
  • Android Volley源码解析
  • Android交互
  • Docker入门(二) - Dockerfile
  • MySQL QA
  • PV统计优化设计
  • SpringBoot几种定时任务的实现方式
  • Webpack 4 学习01(基础配置)
  • yii2中session跨域名的问题
  • 基于HAProxy的高性能缓存服务器nuster
  • 前端工程化(Gulp、Webpack)-webpack
  • 如何在GitHub上创建个人博客
  • 手写一个CommonJS打包工具(一)
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • 进程与线程(三)——进程/线程间通信
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $ git push -u origin master 推送到远程库出错
  • (~_~)
  • (PADS学习)第二章:原理图绘制 第一部分
  • (二)windows配置JDK环境
  • (十五)使用Nexus创建Maven私服
  • (一一四)第九章编程练习
  • (原)Matlab的svmtrain和svmclassify
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .net core控制台应用程序初识
  • .NET Core跨平台微服务学习资源
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET程序员迈向卓越的必由之路
  • .net和jar包windows服务部署