Linux之grep、sed、awk

news2024/11/25 19:48:49

目录

1.grep

2.sed

3.awk


1.grep

grep 擅长过滤查找,按行进行过滤

例:

当有用户对我们的主机进行爆破攻击时,我们可以使用grep将 ip 查找出来,进行封锁等处理

在 /var/log 目录下的 secure 文件中存放在用户登录连接信息,我们可以从当中获取 ip

查看失败的登录

cat secure |grep 'Failed password'

 或

grep 'Failed password' secure

 

 可以配合正则表达式将 IP 过滤出来

grep 'Failed password' secure |grep -Po (25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)

 

 如果要查看登录了几次,可以现将 IP 地址进行排序,再去重

grep 'Failed password' secure |grep -Po (25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d) |sort -n |uniq -c

 -n 显示行号

grep -n 'tcp' a.txt

 -c 对结果行计数

grep -c 'tcp' a.txt

 

  -i 不区分大小写

grep -n 'tcp' a.txt -i

 

 -v 反向搜索,取反

grep -n 'udp' a.txt -v #将不含有 udp 的行过滤出来

 

 -w 精准匹配

grep -w 'tcp' a.txt

 

 -o 只显示匹配的结果

grep -o -n 'tcp' a.txt

 

-A2 同时打印搜索结果行的 后两行 ,A是after 的缩写

grep -A2 'ftp' a.txt

 

 -B3 同时打印搜索结果的前三行,B是before 的缩写

grep -B3 'ftp' a.txt

 

 -E 扩展正则表达式

grep -E '.tp' a.txt # .表示任一字符
grep -E 'ftp|ssh' a.txt #查找ftp 或者ssh , | 是或者的意思,可以写多个或者进行查找

 

-P 使用 perl 正则

grep -P "\d+" a.txt #匹配所有的数字
grep -P "\d{4,}" a.txt #匹配四位数的数字

 

 

2.sed

sed 主要用于取行或者修改替换

用法:sed [-nri] [动作] 目标文件

选项与参数:

-n :使用安静(silent)模式

-r :sed 的动作支持的是延伸正则表示法的语法

-i :直接修改读取的文件内容,而不是输出到终端

动作说明:[n1][,n2]function

n1, n2 一般表示为行号,[,n2] 表示这个参数可选,可有可无

function:

a:指定行后面插入一行

d:删除

i:指定行前面插入一行

p:打印,  #一般和前面的 -n 参数以前用

s:替换 需要忽略大小写,全局替换需要g

例 :p 打印

含有 a 的行

sed '/a/p' b.txt  #默认打印所有行,并且匹配到的a所在行重新打印一遍

  

sed -n '/a/p' b.txt # 加上 -n 进入安静(silent)模式,就只打印含有 a 的行

 打印含有 ‘tcp’ 的行

sed -n '3p' b.txt #打印第三行
sed -n '1,3p' b.txt #打印1-3行

 例: d 删除

删除含有 a 的行(并不是删除源文件的a,只是将结果删除显示在终端)

 例:使用 -i 删除文件内容

删除原文件中含有 a 的行

 例:指定行号进行删除

sed '1,3d' b.txt # 显示在终端的删除前三行
sed -i '1,3d' b.txt #删除原文件前三行

 例:-a  插入数据

在第三行后面插入数据

sed '3a yeyeye' b.txt

 在第二行前面插入一行数据

sed '2i nonono' b.xtx

 加上 -i 就可以直接修改原文件

sed -i '2i nonono' b.xtx

 

 例: s 替换数据

将23替换成123

sed 's#23#123# b.txt

 

同一行的第一个替换,后面的不替换

 加上 g 可以进行全部替换

sed 's#a#xx#g' b.txt

 

忽略大小写进行替换 可以加gI 

sed 's#a#xx#gI' b.txt

3.awk

awk 用于取列

例:默认以空格进行分割列

取列

wak '{print $1}' b.txt #取第一列
wak '{print $2}' b.txt #取第二列
wak '{print $3}' b.txt #取第三列

 每一行的最后一列 NF

awk '{print $NF}' b.txt

 取第一列和最后一列

awk '{print $1,$NF}' b.txt

例:计算

第二列 乘以 第三列

awk '{print $1,$2*$3}' b.txt

 例:根据行号筛选内容

# a = 1 表示变量赋值,让 a=1
# a == 1 ,表示判断一下 a 的值是不是等于 1 ,等于 1 那么条件判断结果为真,不等 1 那么条件判断结果为假
# 支持符号: > < == >=   <=
awk 'NR==1' b.txt #取第一行
awk 'NR>1' b.txt #取行号大于2的内容
awk 'NR<=3' b.txt #取行号小于等于3的内容

 取行的同时取列

awk 'NR>1{print $1,$2*$3}' b.txt

取出含有 a 的行数

awk '/a/' b.txt

指定分隔符

awk -F ":" '{print $1}' /etc/passwd # 指定以 :进行分割
# && 表示 and ,两个条件同时成立
# || 表示 or ,满足一个条件即可
awk -F ':' 'NR==2 || NR==6 {print $1}' etc/passwd # 取出第二
行或第六行的第一列数据,分隔符为:

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

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

相关文章

JVM 垃圾回收详解

前言 什么是垃圾? 垃圾是指运行程序中没有任何引用指向的对象&#xff0c;需要被回收。 内存溢出和内存泄漏 内存溢出&#xff1a;经过垃圾回收之后&#xff0c;内存仍旧无法存储新创建的对象&#xff0c;内存不够溢出。 内存泄漏&#xff1a;又叫“存储泄漏”&#xff0…

Docker与微服务:构建和部署微服务架构的完整指南

微服务架构已经成为现代应用开发的主要范式之一&#xff0c;而Docker容器技术则为微服务的构建、部署和管理提供了理想的解决方案。本文将深入探讨如何使用Docker构建和部署微服务架构&#xff0c;提供更多示例代码和细致的指南&#xff0c;以帮助大家更全面地理解和运用这些关…

简单几步完成SVN的安装

介绍以及特点 SVN&#xff1a;Subversion&#xff0c;即版本控制系统。 1.代码版本管理工具 2.查看所有的修改记录 3.恢复到任何历史版本和已经删除的文件 4.使用简单上手快&#xff0c;企业安全必备 下载安装 SVN的安装分为两部分&#xff0c;第一部分是服务端安装&…

从零开始在Linux服务器配置并运行YOLO8+Web项目

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a; 神经网络&#xff08;随缘更新&#xff09; ✨特色…

Docker介绍,Docker安装

docker镜像仓库官网 一、Docker的基本概念 1.Docker的三大核心组件 docker 镜像 --------docker images docker 仓库---------docker registeries docker 容器---------docker containers 2.Docker 镜像 Docker镜像是运行docker容器时的只读模板&#xff0c;每一个镜像由一…

20、WEB攻防——PHP特性缺陷对比函数CTF考点CMS审计实例

文章目录 一、PHP常用过滤函数&#xff1a;1.1 与1.2 md51.3 intval1.4 strpos1.5 in_array1.6 preg_match1.7 str_replace CTFshow演示三、参考资料 一、PHP常用过滤函数&#xff1a; 1.1 与 &#xff1a;弱类型对比&#xff08;不考虑数据类型&#xff09;&#xff0c;甚至…

vue使用xlsx和xlsx-style导出xlsx文件并修改样式

1.下载依赖 npm install xlsx --save npm install file-saver --save npm install xlsx-style --save2.先修改xlsx-style的源码&#xff0c;一旦引入xlsx-style则会报错 在\node_modules\xlsx-style\dist\cpexcel.js 807行 的 var cpt require(’./cpt’ ‘able’); 改成 v…

Mongodb复制集架构

目录 复制集架构 复制集优点 复制集模式 复制集搭建 复制集常用命令 复制集增删节点 复制集选举 复制集同步 oplog分析 什么是oplog 查看oplog oplog大小 复制集架构 复制集优点 数据复制: 数据在Primary节点上进行写入&#xff0c;然后异步地复制到Secondary节点&a…

四十七----redux

一、redux redux⽤于状态集中存储,状态的更新必须是⼀种可预测的⽅式更新。严格的单向数据流是Redux架构的设计核⼼。 这意味着应⽤中所有的数据都遵循相同的⽣命周期,这样可以让应⽤变得更加可预测且容易理解。 什么时候用redux? 多交互,多数据源等场景某个组件的状态,需…

C#拼接JSON

一、业务背景 最近项目需要与U8c对接&#xff0c;实现增删改查&#xff0c;借此机会&#xff0c;梳理一下C#解析Json字符串的问题。 这篇文章&#xff0c;先以新增接口为例。 二、新增接口 查看需要传入的json格式。 拼接json&#xff0c;无非就是{}和[]的来回嵌套。 首先&am…

机器人制作开源方案 | 智能水果分拣机器人

作者&#xff1a;史振鹏 岳欣宇 仲祝伟 单位&#xff1a;邢台学院 指导老师&#xff1a;王承林 魏亚清 一、场景调研 智能水果分拣机器人是基于探索者设计的一款可搬运可分拣以及移动的一款轻便机器人&#xff0c;集成了语音控制、分拣、搬运、识别、抓取等功能&#xff0c;…

Java 序列化机制详解

Java 序列化机制是一种将对象转换为字节流的过程&#xff0c;以便在网络上传输或保存到文件中&#xff0c;并能在需要时将字节流还原为对象。这一机制通过实现 java.io.Serializable 接口来实现&#xff0c;同时涉及到一些关键概念和注意事项。 Serializable 接口 Serializabl…

vscode使用remote ssh到server上 - Node进程吃满CPU

起因&#xff1a;Node进程吃满CPU 分析 我发现每次使用vscode的remote插件登陆到server后&#xff0c;就会出现node进程&#xff0c;不太清楚干什么用的&#xff0c;但是绝对和它有关。 查找原因 首先找到了这篇文章&#xff0c;解决了rg进程的问题&#xff1a; https://blo…

Shell编程基础 – C语言风格的Bash for循环

Shell编程基础 – C语言风格的Bash for循环 Shell Programming Essentials - C Style For Loop in Bash By JacksonML 循环是编程语言的基本概念之一&#xff0c;同样也是Bash编程的核心。当用户需要一遍又一遍地运行一系列命令直到达到特定条件时&#xff0c;例如&#xff1…

知识蒸馏:channel wise知识蒸馏CWD

论文:https://arxiv.org/pdf/2011.13256.pdf 1. 摘要 知识蒸馏用于训练紧凑型(轻量)模型被证明是一种简单、高效的方法, 轻量的学生网络通过教师网络的知识迁移来实现监督学习。大部分的KD方法都是通过algin学生网络和教师网络的归一化的feature map, 最小化feature map上的…

数据结构--图

树具有灵活性&#xff0c;并且存在许多不同的树的应用&#xff0c;但是就树本身而言有一定的局限性&#xff0c;树只能表示层次关系&#xff0c;比如父子关系。而其他的比如兄弟关系只能够间接表示。 推广--- 图 图形结构中&#xff0c;数据元素之间的关系是任意的。 一、图…

内网安全—Windows系统内核溢出漏洞提权

系统内核溢出漏洞提权 往缓冲区中写入超出限定长度的内容&#xff0c;造成缓冲区溢出&#xff0c;从而破坏程序的堆栈进而运行自己精心准备的指定代码&#xff0c;达到攻击的目的。 分类&#xff1a; 堆溢出 栈溢出 查找补丁的方法 1、手工查找补丁情况 systeminfo Wmic qfe…

Redis设计与实现之Lua 脚本

目录 一、 Lua 脚本 1、初始化 Lua 环境 2、脚本的安全性 3、脚本的执行 4、 EVAL 命令的实现 定义 Lua 函数 执行 Lua 函数 5、 EVALSHA 命令的实现 二、 小结 一、 Lua 脚本 Lua 脚本功能是 Reids 2.6 版本的最大亮点&#xff0c;通过内嵌对 Lua 环境的支持&#xf…

加特兰Demo点迹数据Python读取和显示

加特兰当前主推的芯片&#xff0c;拿到了样件做了几个基本Demo测试&#xff0c;录取的点迹数据为txt文档&#xff0c;数据格式如下&#xff1a; FT 0.10 CMN1 263 CMN2 150 BNK 0 --- F 0 O 140/2/140!0/0/0/0/0/0.00! --- BK00: P 25.67, R 4.11, V 0.00, A -39.04,…

AR室内导航如何实现?技术与原理分析

随着科技的进步&#xff0c;我们生活中许多方面正在被重新定义。其中之一就是导航&#xff0c;尤其是室内导航。增强现实&#xff08;AR&#xff09;技术的出现为室内导航带来了革命性的变革。本文将深入探讨AR室内导航的技术与原理&#xff0c;以及它如何改变我们的生活方式。…