处理文本内容的命令和正则表达式
处理文本内容的命令
正则表达式匹配的是文本内容,linux的文本三剑客 都是针对文本内容
文本三剑客:
grep 过滤文本内容
sed 针对文本内容进行增删改查
awk 按行取列
文本三剑客都是按行进行匹配。
grep
grep的作用就是使用正则表达式来匹配文本内容。
选项:
-m 匹配几次之后停止
[root@localhost opt]# grep -m 1 root /etc/passwd root:x:0:0:root:/root:/bin/bash
-v 取反
[root@localhost opt]# cat /opt/123.txt qwe 123 aaa bbb ccc [root@localhost opt]# grep -v 123 /opt//123.txt qwe aaa bbb ccc
-n 显示匹配的行号
[root@localhost opt]# grep -n root /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin
-c 只统计匹配的行数
[root@localhost opt]# grep -c root /etc/passwd 2
-o 仅显示匹配的结果
[root@localhost opt]# grep -o root /etc/passwd root root root root
-q 静默模式。不输出任何信息
[root@localhost opt]# grep -q root /etc/passwd [root@localhost opt]#
-A 数字 后几行
[root@localhost opt]# grep -A 3 root /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin -- operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin
-B 数字 前几行
-C 数字 前后各几行
-e 或者
-E 匹配扩展正则表达式
-f 匹配两个文件相同的内容,以第一个文件为准
[root@localhost opt]# vim 123.txt qwe 123 aaa bbb ccc [root@localhost opt]# vim 456.txt 123 qwe ddd ccc [root@localhost opt]# grep -f 123.txt 456.txt 123 qwe ccc
-r 递归目录 目录下的文件内容。软连接不包含在内
-R 递归目录 目录下的文件内容。包含软连接。
[root@localhost opt]# grep -r qwe /opt /opt/dec/123.txt:qwe /opt/123.txt:qwe /opt/456.txt:qwe [root@localhost opt]# grep -R qwe /opt /opt/dec/123.txt:qwe /opt/123.txt:qwe /opt/999.txt:qwe /opt/456.txt:qwe
排序:
sort
sort
以行为单位,对文件的内容进行排序
sort 选项 参数
cat file | sort 选项
-f 忽略大小写,默认会把大写字母排在前面
-b 忽略每行之前的空格
-n 按照数字进行排序
-r 反向排序
-u 相同的数据仅显示一行
-o 把排序后的结构转存到指定的文件
uniq
uniq 去除连续重复的行,只显示一行
-c 统计连续重复的行的次数,合并连续重复的行
-u 显示仅出现一次的行(包括不是连续出现的重复行)
-d 仅显示连续重复的行(不包括非连续出现的内容)
tr 用来对标准输出的字符进行替换,压缩和删除。
tr 选项 参数
-c 保留字符集1的字符,其他的字符用字符集2来进行替换
-d 删除字符集中的一部分
-s 把字符集1的部分替换成字符集2的部分 连续重复出现的字符串压缩成一个字符
cut
cut和awk 都可以按行取列。
cut 快速裁剪
-d 指定分隔符(默认的分割符是tab键)
-f 对字段进行截取,指定输出段的内容
-complement 输出的时候排除指定的字段
-output-delimiter 更改输出内容的分割符
[root@localhost ~]# head -n 1 /etc/passwd | cut -d ':' -f 1-5 --output-delimiter=' ' root x 0 0 root
-b 以字节为单位进行截取
-c 以字符为单位进行截取
文件的拆分:split
split 大文件拆分成若干小的文件
-l 按行来进行分割
-b 按照大小来进行分割
面试题:
现在有一个日志文件,很大,5G,第一个能不能快速的打开?
第一个方法:拆分 -l 按行 -b 大小
这种文件推荐使用按大小。
文件合并:
cat
paste
面试题:
cat合并和paste合并之间有什么区别
cat是上下合并
paste是左右合并
面试题:
统计当前主机的连接状态:
[root@localhost opt]# ss -antp | grep -v '^State' | cut -d ' ' -f 1 | sort | uniq -c1 ESTAB13 LISTEN
正则表达式:
正则表达式:由一类特殊字符以及文本字符所编写的一个模式,模式又来匹配文件当中的内容(字符)。
效验我们输入的内容是否满足规定,格式,长度等等要求。
主要用来匹配文本内容,命令的结果。
通配符:只能用于匹配文件名和目录名,不能匹配文件内容和命令结构。
正则表达式:
基本正则表达式:
元字符(字符匹配)
. 任意单个字符,也可以是一个汉字
\ 转义符 恢复其本意
[] 匹配指定范围内的任意单个字符或者数字
[^] 取反
^# 以#为开头
^$ 表示空行
匹配字符出现的次数:
* 匹配前面的字符任意次,0次也可以。贪婪模式,尽可能的匹配。
.* 匹配前面的任意字符,至少要有一次。匹配所有。
\? 匹配前面的字符0次或者1次,可有可无。
\+
匹配前面的字符只少出现一次
\{n\}
匹配前面的字符=n次,可以小于n,但是不能大于n,而且前面的字符必须要是连续出现
\{m,n\}
匹配前面的字符至少m次,至多n次。必须是连续出现,超出的不在匹配范围。
位置锚定:
^:以什么为开头,行首锚定
$:以什么为结尾,行尾锚定
[root@localhost opt]# cat -n test1.txt 1 137703251942 131313010103 1111111111114 aaacvvaada5 rootroot6 root7 rootrootroot [root@localhost opt]# cat test1.txt | grep -n "^root$" #这一行只能有root 6:root
\< 或者 \b 词首锚定,匹配单词的左侧(连续的数字,字母。下划线都算单词内部)
\> 或者 \b 词尾锚定 用于匹配单词的右侧
\broot\b 匹配整个单词。空格隔开的也算整个单词
^root$ 整行只有这一个单词
区别
分组和逻辑关系
分组()
或者 \|
扩展正则表达式:
grep -E
元字符(字符匹配)
. 任意单个字符,也可以是一个汉字
\ 转义符 恢复其本意
[] 匹配指定范围内的任意单个字符或者数字
[^] 取反
^# 以#为开头
^$ 表示空行
匹配字符出现的次数:
* 匹配前面的字符任意次,0次也可以。贪婪模式,尽可能的匹配。
.* 匹配前面的任意字符,至少要有一次。匹配所有。
? 匹配前面的字符0次或者1次,可有可无。
* 匹配前面的字符只少出现一次
{n} 匹配前面的字符=n次,可以小于n,但是不能大于n,而且前面的字符必须要是连续出现
{m,n}匹配前面的字符至少m次,至多n次。必须是连续出现,超出的不在匹配范围。
位置锚定:
^:以什么为开头,行首锚定
$:以什么为结尾,行尾锚定
[root@localhost opt]# cat -n test1.txt 1 137703251942 131313010103 1111111111114 aaacvvaada5 rootroot6 root7 rootrootroot [root@localhost opt]# cat test1.txt | grep -n "^root$" #这一行只能有root 6:root
\< 或者 \b 词首锚定,匹配单词的左侧(连续的数字,字母。下划线都算单词内部)
\> 或者 \b 词尾锚定 用于匹配单词的右侧
\broot\b 匹配整个单词。空格隔开的也算整个单词
^root$ 整行只有这一个单词
区别
分组和逻辑关系
分组()
或者 |
grep -E
egrep
相关文章:

处理文本内容的命令和正则表达式
处理文本内容的命令 正则表达式匹配的是文本内容,linux的文本三剑客 都是针对文本内容 文本三剑客: grep 过滤文本内容 sed 针对文本内容进行增删改查 awk 按行取列 文本三剑客都是按行进行匹配。 grep grep的作用就是使用正则表达式来匹配文本内…...

AI与音乐:当技术与艺术发生冲突
AI在创造还是毁掉音乐? 在科技日新月异的今天,人工智能(AI)已经渗透到了我们生活的方方面面,音乐领域也不例外。然而,尽管AI为音乐创作带来了前所未有的便利,我却深感其正在毁掉音乐的本质。 …...

java泛型学习
没有java泛型会存在的问题 假设我们有一个方法,希望通过传递不同类型的参数,输出不同类型的对象值。正常情况下我们可能会写不同的方法来实现,但是这样会导致类不断增加,并且类方法很相似,不能够复用。进而导致类爆炸…...

vscode c++ 开发环境配置
今天各位同学已经安装了mingw环境,但部分同学vscode开发环境又问题,究其原因,还是vscode 编译环境配置错误,有问题的同学 按如下步骤处理: 1、卸载相关插件。按下列步骤重新安装插件。 2、继续在搜索框中搜索并安装 C…...

PHP安装配置
文章目录 1.下载PHP2.配置环境变量3.Apache安装配置 1.下载PHP PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法…...

std::vector<>的{}用法与stl中的共享指针
讨论 std::vector<>的{}用法比较方便,在stl中的共享指针中是否适用? 代码 #include <iostream> #include <memory> #include <vector> using namespace std;int main() {vector<int> vt1({1,3,5});vec…...

《FFmpeg开发实战:从零基础到短视频上线》资源下载和内容勘误
资源下载 下面是《FFmpeg开发实战:从零基础到短视频上线》一书用到的工具和代码资源: 1、本书使用的FFmpeg版本为FFmpeg 5.1.2,也可在FFmpeg的github主页上下载最新的FFmpeg源码。 2、本书第12章使用的Android Studio版本为Android Studio D…...

OpenCV目标识别
一 图像轮廓 具有相同颜色或强度的连续点的曲线。 图像轮廓的作用 可以用于图像分析 物体的识别与检测 注意 为了检测的准确性,需要先对图像进行二值化或Canny操作。 画轮廓时会修改输入的图像。 轮廓查找的API findContours(img,mode,ApproximationMode,...)…...
密码学及其应用——为什么选择接近的质数因子对RSA加密算法不安全?
RSA加密算法是一种广泛使用的非对称加密算法,它的安全性依赖于大整数分解的难度。具体来说,RSA算法生成的公钥包含一个大整数N,这是两个大质数p和q的乘积。然而,如果这两个质数p和q太接近,则可以相对容易地对N进行因式…...

爱心商城管理系统的设计
管理员账户功能包括:系统首页,个人中心,管理员管理,企业管理,用户管理,论坛管理,商品管理,公告管理,用户捐赠 企业账户功能包括:系统首页,个人中…...

【python】linux下安装chromedriver
首先,安装selenium模块 pip3 install selenium查看系统内chrome版本: google-chrome --version 根据谷歌浏览器版本下载对应的浏览器驱动版本: wget https://storage.googleapis.com/chrome-for-testing-public/126.0.6478.114/linux64/ch…...

Day18—使用Scrapy框架快速开发爬虫
Scrapy是一个强大的Python框架,用于快速开发爬虫程序。它提供了一整套工具来处理网页爬取和数据提取,非常适合于数据挖掘和信息抓取。本文将详细介绍如何使用Scrapy框架,包括创建项目、编写爬虫规则、设置中间件和管道等。 1. Scrapy框架概述 Scrapy框架以其高性能、易用性…...

04--MySQL8.0_JDBC
第一章 JDBC概述 之前我们学习了JavaSE,编写了Java程序,数据保存在变量、数组、集合等中,无法持久化,后来学习了IO流可以将数据写入文件,但不方便管理数据以及维护数据的关系; 后来我们学习了数据库管理软件MySQL,可以方便的管理数据1。 那么如何将它俩结合起来呢?即…...

OPENCV中0x00007FFE5F35F39C发生异常
原因:读取图片时已经为灰度图像,又进行了一次灰度处理cvtColor 解决方法:如上图所示,将cv::imread的第二个参数改为cv::IMREAD_COLOR;或者保留cv::IMREAD_GRAYSCALE,删去后面的cv::cvtColor...

Python 设计模式(第2版) -- 第三部分(行为型模式)
Python 设计模式(第2版) 再介绍下行为型设计模式。 行为型模式,顾名思义,它主要关注的是对象的责任。它们用来处理对象之间的交互,以实现更大的功能。行为型模式建议:对象之间应该能够彼此交互,同时还应该是松散耦合…...

EXCEL数据导入HIVE
引言 本文将论述如何将Windows本地的excel表数据,导入到虚拟机Linux系统中的Hadoop生态中的Hive数据仓库中。 实验准备 DBeaver Hive3.1(Hadoop3.1) excel数据表 实验步骤 一、首先打开虚拟机,启动Hadoop,启动h…...

C语言常用标准头文件
头文件的基础概念 在C的系列语言程序中,头文件(通常扩展名为.h)被大量使用,它通常包含函数、变量、结构体等的声明和定义,以及一些宏定义和类型定义。头文件的主要作用是为了方便管理和重用代码,它可以被多…...

vuejs3用gsap实现动画
效果 gsap官网地址: https://gsap.com/ 安装gsap npm i gsap 创建Gsap.vue文件 <script setup> import {reactive, watch} from "vue"; import gsap from "gsap"; const props defineProps({value:{type:Number,default:0} }) cons…...

企业级-PDF文件下载
作者:fyupeng 技术专栏:☞ https://github.com/fyupeng 项目地址:☞ https://github.com/fyupeng/rpc-netty-framework 留给读者 一、介绍 文件下载在浏览器可以根据响应头设置纯下载和直接打开两种方式。 二、代码 RequestMapping("/…...

00 - React 基础
1. React 基础 安装react指令 可参考: 官网官网使用教程 如: npx create-react-app 项目名 如:npx create-react-app react-redux-proJSX JSX 是一种 JavaScript 的语法扩展,类似于 XML 或 HTML,允许我们在 Java…...

基于WPF技术的换热站智能监控系统17--项目总结
1、项目颜值,你打几分? 基于WPF技术的换热站智能监控系统01--项目创建-CSDN博客 基于WPF技术的换热站智能监控系统02--标题栏实现-CSDN博客 基于WPF技术的换热站智能监控系统03--实现左侧加载动画_wpf控制系统-CSDN博客 基于WPF技术的换热站智能监…...

CI /CD学习
CI/CD概述 CI/CD 是持续集成和持续交付/部署的缩写,旨在简化并加快软件开发生命周期。 持续集成(CI)是指自动且频繁地将代码更改集成到共享源代码存储库中的做法。持续交付和/或持续部署(CD)是一个由两部分组成的过程…...

基于matlab的高斯滤波与图像去噪
1 高斯滤波原理 1.1 原理 高斯滤波是一种线性平滑滤波技术,主要用于消除图像中的高斯噪声。它的工作原理可以理解为对整幅图像进行加权平均的过程,即每个像素点的值都由其本身和邻域内的其他像素值经过加权平均后得到。 高斯滤波实质上是一种信号的滤…...

解决 uniapp h5 页面在私有企微iOS平台 间歇性调用uni api不成功问题(uni.previewImage为例)。
demo <template><view class"content"><image class"logo" src"/static/logo.png"></image><button click"previewImage">预览图片</button></view> </template><script> //打…...

Jenkins nginx自动化构建前端vue项目
在现代的Web开发中,Vue.js已经成为一种非常流行的JavaScript框架。为了更高效地管理和部署Vue.js项目,使用自动化构建工具是至关重要的。Jenkins作为一款强大的持续集成和持续部署(CI/CD)工具,为我们提供了一种便捷的方…...

Devicetree - 删除某个节点或属性
在设备树(devicetree)中,删除语法用于从现有设备树中删除属性或节点。这通常在设备树覆盖文件(DTS)或片段文件中完成。该语法使用 /delete-property/ 和 /delete-node/ 指令。 以下是如何使用这些指令的示例࿱…...

Xcode will continue when the operation completes
Xcode 15后,连接手机经常出现 Preparing iPhone. Xcode will continue when the operation completes.记录一下解决办法。其他提示,Xcode连接不上手机也可以尝试通过这个方法解决。 注意:最好关闭科学上网再操作。 从Xcode取消iPhone的配对(右键单击 -Unpair Devi…...

Python爬虫-贝壳新房
前言 本文是该专栏的第32篇,后面会持续分享python爬虫干货知识,记得关注。 本文以某房网为例,如下图所示,采集对应城市的新房房源数据。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地…...

Canvas绘制图片和区域
如何使用Canvas在图片上绘制区域? 一. 首先,我们需要初始化三个canvas画布(初始化Canvas) initCanvas() {// 初始化canvas画布let canvasWrap document.getElementsByClassName("canvas-wrap");this.wrapWidth canva…...

Day10—Spark SQL基础
Spark SQL介绍 Spark SQL是一个用于结构化数据处理的Spark组件。所谓结构化数据,是指具有Schema信息的数据,例如JSON、Parquet、Avro、CSV格式的数据。与基础的Spark RDD API不同,Spark SQL提供了对结构化数据的查询和计算接口。 Spark …...