1、正则表达式
grep匹配
grep用来过滤文本内容,以匹配要查询的结果。
grep root /etc/passwd:匹配包含root的行
- -m 数字:匹配几次后停止
- -v:取反
- -i:忽略字符的大小写,默认的,可以不加
- -n:显示匹配的行号
- -c:统计匹配的行数
- -o:仅匹配的字符串
- -q:静默模式
- -A 数字:after,包含匹配到的行,以及后几行
- -B 数字:包含匹配到的行,以及前几行
- -C 数字:包含匹配到的行,以及前后各几行
- -w:匹配完整的单词的行
- -E:使用扩展正则表达式,egrep=grep -E
- -f:匹配两个文件中的相同内容,以第一个文件的内容为准(参照)
- -r:递归目录,查找文件内容,软连接内容不包含。
- -R:递归目录,查找文件内容,软连接内容包含。
sort排序
按行对文件的内容进行排序,也可以根据不同的数据类型进行排序
可见数字在前,字母在后。
- -f:忽略大小写,可以不加
- -b:忽略每行前面的空格
- -n:按照数字进行排序
- -u:去重,相同的内容仅显示一行
- -o:输出的文件名,把sort排序后的结果输出到指定的文件
案例1:按原文排序输出到指定文件里
cat -n 可以添加行数,sort -no 表示按数字排序输出到指定文件中,正好可以按原文输出。
uniq去重
用于统计或者忽略文件中连续出现的重复行,一般和sort结合使用
uniq 选线 文件名 = cat 文件名 | uniq 选项
- -c:统计连续重复的行的次数,并且合并重复的行
- -u:显示仅出现一次的行(包括不连续的重复的行)
- -d:仅显示重复出现的行(必须时连续的重复的行)
tr替换、压缩和删除
用来对标准输入的字符串进行替换、压缩和删除
tr 选项 参数
echo “字符串” | tr 选项
- -c:保留字符集1的字符,其他字符替换字符集2
- -d:删除属于字符集1的字符
- -s:将重复出现的字符串压缩成一个,用字符集2 替换 字符集1。
- -t:默认带t,替换字符集,一般不加
cut 截取
cut是对字段进行截取和裁剪
cut 选项 参数
cat 文件名 | cut 选项
- -d:指定分隔符(默认分隔符是tab)
- -f:指定要截取的字段
- -b:以字符的单位进行截取
- -c:以字符的单位进行截取
- -complement:排除指定的字段
- -output-delimiter:更改输出内容的分隔符
以:为分隔符,截取 /etc/passwd 的第1-3段字符。
文件合并
cat 1 2 > 3 —上下合并
paste 1 2 > 3 —左右合并
split文件拆分
有一个文件,太大,直接打开速度很慢,有什么办法提高素的?
- -l:按行分割
- -b:按大小分割
正则表达式
正则表达式区别通配符,正则表达式匹配文本的内容,命令的输出结果也属于文本内容,也可以使用正则表达式。
使用正则表达式,匹配内容最好用引号(单双都行)引起来,避免发生歧义。
通配符用来匹配文件名和目录名。
通配符
匹配文件名或者目录名
*:任意一个或多个字符
?:任意单个字符
[a-z]、[0-9]:匹配任意单个字符
基本正则
元字符
- . :任意单个字符
- \:表示转义符
- [a-b]、[A-Z]、[0-9]:匹配文件内容的任意单个字符
- [[:blank:]]:匹配空白字符,空格
- ():表示分组
- [^]:取反
次数表示
- *:任意字符,表示匹配前面的任意字符,0次也算,尽可能多的匹配
- . *:任意长度的字符,最少有1次,也就是匹配所有。
- \?:匹配前面的字符0次或者1次,可有可无
- \+:匹配前面的字符,最少出现1次,有且>=1
- \{n\}:匹配前面的字符等于多少次
- \{m,n\}:匹配前面的字符最少m次,最多n次
- \{,n\}:匹配前面的字符最多n次,只要比n小,都算
- \{m,\}:匹配前面的字符最少m次,只要比m大,都算
案例1:匹配ens33出现的IP地址
命令:ifconfig ens33 | grep -w "inet" | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"
位置锚定
- ^:以什么开始
- $:以什么结尾
- ^$:空行
^root$:表示匹配以root为开头和结尾的,即这一行只有root一个单词
词首锚定
- \b
词尾锚定
- \b
分组和逻辑条件
分组:()
或:\|
扩展正则
扩展正则表达式
grep -E = egrep
*:任意字符,表示匹配前面的任意字符,0次也算,尽可能多的匹配
. *:任意长度的字符,最少有1次,也就是匹配所有
?:匹配前面的字符0次或者1次,可有可无
+:匹配前面的字符,最少出现1次,有且>=1
{n}:匹配前面的字符等于多少次
{m,n}:匹配前面的字符最少m次,最多n次
{,n}:匹配前面的字符最多n次,只要比n小,都算
{m,}:匹配前面的字符最少m次,只要比m大,都算
补充案例
案例1:显示/etc/passwd中以sh结尾的行
案例2:查找/etc/inittab中含有“以s开头,并以d结尾的单词模式的行
案例3:查找ifconfig命令结果中的1-255之间的整数
案例4:在/etc/passwd中取出默认shell为bash的行
案例5:高亮显示passwd文件中冒号,及其两侧的字符
cat /etc/passwd | grep -E ".?:.?"
案例6:统计当前主机状态,使用netstat或者ss
方法1:netstat -antp | grep -v "State" | grep -v "Internet" | tr -s " " | cut -d " " -f 6 | sort | uniq -c
方法2:ss -antp | grep -v "State" | cut -d " " -f 1 | sort | uniq -c
案例7:统计nginx的访问日志当中多次出现的ip地址
cat /var/log/nginx/access.log | cut -d " " -f 1 | sort | uniq -c
相关文章:

1、正则表达式
grep匹配 grep用来过滤文本内容,以匹配要查询的结果。 grep root /etc/passwd:匹配包含root的行 -m 数字:匹配几次后停止 -v:取反-i:忽略字符的大小写,默认的,可以不加-n:…...
Airsim安装问题:This project was made with a different version of the Unreal Engine.
本文记录如何在 Ubuntu 18.04 系统中配置 AirSim 和 Unreal Engine 4.27,并成功打开默认的 Blocks 环境项目。 环境说明 系统:Ubuntu 18.04Unreal Engine 版本:4.27AirSim:主分支文件路径: Unreal Engine:…...

java八股-分布式服务的接口幂等性如何设计?
文章目录 接口幂等token Redis分布式锁 原文视频链接:讲解的流程特别清晰,易懂,收获巨大 【新版Java面试专题视频教程,java八股文面试全套真题深度详解(含大厂高频面试真题)】 https://www.bilibili.com/…...

vscode python code runner执行乱码
打开vscode code runner插件配置,如图所示: 然后在setting.json修改运行python的默认命令: 将原来 替换成 "python":"set PYTHONIOENCODINGutf8 && python", 参考:Vscode——python环境输出中文乱…...
Java中的继承详解
在Java编程中,继承(Inheritance)是一种面向对象编程(OOP)的核心概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。通过继承&a…...

kafka进阶_2.存储消息
文章目录 一、存储消息介绍二、副本同步2.1、数据一致性2.2、HW在副本之间的传递 如果想了解kafka基础架构和生产者架构可以参考 kafka基础和 Kafka进阶_1.生产消息。 一、存储消息介绍 数据已经由生产者Producer发送给Kafka集群,当Kafka接收到数据后,…...

如何启用本机GPU硬件加速猿大师播放器网页同时播放多路RTSP H.265 1080P高清摄像头RTSP视频流?
目前市面上主流播放RTSP视频流的方式是用服务器转码方案,这种方案的好处是兼容性更强,可以用于不同的平台,比如:Windows、Linux或者手机端,但是缺点也很明显:延迟高、播放高清或者同时播放多路视频视频容易…...
如何更好地设计SaaS系统架构
SaaS(Software as a Service)架构设计的核心目标是满足多租户需求、支持弹性扩展和高性能,同时保持低成本和高可靠性。一个成功的SaaS系统需要兼顾技术架构、资源利用、用户体验和商业目标。本文从以下几个方面探讨如何更好地设计SaaS系统架构…...

表征对齐在训练DiT模型中的重要性
Diffusion Models专栏文章汇总:入门与实战 前言:训练过DiT模型的读者们肯定有所体会,相比于UNet模型训练难度大了很多,模型不仅很难收敛,而且非常容易训崩,其中一个很重要的原因是没有进行表征对齐…...
Qt中CMakeLists.txt解释大全
Qt从Qt5.15版本开始正式推荐使用CMake进行项目管理。 在Qt 5.15之前,虽然可以使用CMake进行构建,但Qt官方更推荐使用qmake。 然而,从Qt5.15开始,Qt官方正式推荐使用CMake作为主要的构建系统,并在Qt 6中进一步加强了…...
【在 PyTorch 中使用 tqdm 显示训练进度条,并解决常见错误TypeError: ‘module‘ object is not callable】
在 PyTorch 中使用 tqdm 显示训练进度条,并解决常见错误TypeError: module object is not callable 在进行深度学习模型训练时,尤其是在处理大规模数据时,实时了解训练过程中的进展是非常重要的。为了实现这一点,我们可以使用 tq…...

数据结构-堆的实现和应用
目录 1.堆的概念 2.堆的构建 3.堆的实现 4.堆的功能实现 4.1堆的初始化 4.2堆的销毁 4.3堆的插入 4.3.1向上调整 4.4堆的删除 4.4.1向下调整法 编辑4.5取堆顶 5. 向上调整法和向下调整法比较 6.堆的应用 6.1TOP-K问题 6.2TOP-K思路 6.2.1用前n个数据来建堆 6.…...

数据分析的尽头是web APP?
数据分析的尽头是web APP? 在做了一些数据分析的项目,也制作了一些数据分析相关的web APP之后,总结自己的一些想法和大家分享。 1.web APP是呈现数据分析结果的另外一种形式。 数据分析常见的结果是数据分析报告,可以是PPT或者…...

YOLO系列论文综述(从YOLOv1到YOLOv11)【第3篇:YOLOv1——YOLO的开山之作】
YOLOv1 1 摘要2 YOLO: You Only Look Once2.1 如何工作2.2 网络架构2.3 训练2.4 优缺点 YOLO系列博文: 【第1篇:概述物体检测算法发展史、YOLO应用领域、评价指标和NMS】【第2篇:YOLO系列论文、代码和主要优缺点汇总】 ——————————…...
容器和它的隔离机制
什么是容器和它的隔离机制? 容器 是一种轻量化的虚拟化技术,它允许多个应用程序共享同一个操作系统(OS)内核,同时为每个应用程序提供自己的运行环境。容器通过利用 Linux 的内核功能(如 Namespaces 和 Cgr…...

【数据结构与算法】排序算法总结:冒泡 / 快排 / 直接插入 / 希尔 / 简单选择 / 堆排序 / 归并排序
1 排序 1.1 冒泡 内排序的交换排序类别 1.1.1 普通实现 public class BubbleSort {/*** 基本的 冒泡排序*/public static void bubbleSort(int[] srcArray) {int i,j; // 用于存放数组下标int temp 0; // 用于交换数值时临时存放值for(i0;i<srcArray.length-1;i){// j …...

Windows Serv 2019 虚拟机 安装Oracle19c,图文详情(超详细)
1、下载安装文件 Oracle官网下载直链:https://www.oracle.com/database/technologies/oracle-database-software-downloads.html#db_ee 夸克网盘下载:https://pan.quark.cn/s/1460a663ee83 2、新建 Windows Server 2019 虚拟机 (超详细&a…...

数字孪生开发之 Three.js 插件资源库(2)
在当今数字化快速发展的时代,数字孪生技术正逐渐成为各个领域的关键技术之一。它通过创建物理实体的虚拟副本,实现对实体的实时监测、模拟和优化,为企业和组织带来了诸多好处,如提高生产效率、降低成本、改进产品质量等。然而&…...
小米C++ 面试题及参考答案下(120道面试题覆盖各种类型八股文)
指针和引用的区别?怎么实现的? 指针和引用有以下一些主要区别。 从概念上来说,指针是一个变量,它存储的是另一个变量的地址。可以通过指针来间接访问所指向的变量。例如,我们定义一个整型指针int *p;,它可以指向一个整型变量的内存地址。而引用是一个别名,它必须在定义的…...

OpenOCD之J-Link下载
NOTE:此篇文章由笔者的 VSCode编辑GCC for ARM交叉编译工具链Makefile构建OpenOCD调试(基于STM32的标准库)派生而来。 1.下载USB Dirver Tool.exe,选择J-Link dirver,替换成WinUSB驱动。(⭐USB Dirver Tool…...
conda相比python好处
Conda 作为 Python 的环境和包管理工具,相比原生 Python 生态(如 pip 虚拟环境)有许多独特优势,尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处: 一、一站式环境管理:…...

全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
Python Einops库:深度学习中的张量操作革命
Einops(爱因斯坦操作库)就像给张量操作戴上了一副"语义眼镜"——让你用人类能理解的方式告诉计算机如何操作多维数组。这个基于爱因斯坦求和约定的库,用类似自然语言的表达式替代了晦涩的API调用,彻底改变了深度学习工程…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...

针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...