【三剑客和正则表达式】

文章目录

  • 学习目标
  • 一、什么是三剑客
    • 1.三剑客grep
    • 2.三剑客sed
    • 3.三剑客awk
    • 4.正则过滤例子1
    • 5.正则过滤例子2
  • 总结


学习目标

1.学会使用 grep
2.学会使用 sed
3.学会使用 awk
4.学会使用正则表达式

一、什么是三剑客

正则三剑客:grep sed awk

1.三剑客grep

# 擅长过滤
# grep参数-n		行号-c		对结果行计数-i		不区分大小写-v		反向搜索,取反-w		精准匹配-o		只显示匹配的结果-A1		同时打印搜索结果行的后一行-B3		同时打印搜索结果行的前三行-C2		同时打印搜索结果行的上下各两行-E		扩展正则表达式

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16

2.三剑客sed

# 擅长修改
用法:sed [-nri] [动作]  目标文本文件
选项与参数:-n:使用安静(silent)模式。在一般sed的用法中,所有来自STDIN的数据一般都会被列出到终端上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来。-r:sed的动作支持的是延伸型正规表示法的语法(默认是基础正规表示法语法)-i:直接修改读取的文件内容,而不是输出到终端。动作说明:[n1[,n2]]funcitonn1,n2一般表示为行号function:a:指定行后面插入一行d:删除i:指定行前面插入一行p:打印,#一般和前面的-n参数一起用s:替换 需要I忽略大小写,全局替换需要g

17
18
19
20
21
22
23
24
25
26
27

3.三剑客awk

#擅长取列
用法:取列eg1:取列awk '{print $1}'  1.txtawk '{print $1,$7}'  /etc/passwdeg2:指定分割符awk -F ":"  '{print $1,$7}'  /etc/passwd#[ /]+空格 和斜杠/为分隔符,+代表合并连续的分隔符awk -F "[ /]+"  '{print  $2}'  1.txteg3:拼凑指定文本,双引号之间原样输出awk -F ":"  '{print $1":123:"$7}'  /etc/passwdeg4:过滤文本awk -F "[ /]+"  '$2~/^47/' 1.txteg5:根据行号筛选内容awk 'NR<=3{print $0}' 1.txt	 # 大于>   小于<  等于==   大于等于>=   小于等于<=awk:$0代表整行,$1代表第一列,$2代表第二列...第十列$10最后一列$NFNR代表行号

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
过滤文本
51
52
53
54
文本拼凑
55
56

4.正则过滤例子1

1.什么是正则表达式

简单的说,正则表达式就是一套处理大量的字符串而定义的规则和方法。
例如:假设 @代表12345
通过正则表达式这些特殊符号,我们可以快速的过滤、替换需要的内容。
linux正则一般以行为单位处理的。

2.正则表达式

1) ^word 表示搜索以word开头的内容
2) word$ 表示搜索以word结尾的内容
3) ^$  表示空行,不是空格
4) .   代表且只能代表任意一个字符
5) \   转义字符,让有着特殊身份意义的字符,脱掉马甲,还原原型
6) *  重复0个或多个前面的一个字符。不代表所有了
7) .* 匹配所有的字符。 ^.* 任意多个字符开头
8) [abc] 匹配字符集内任意一个字符[a-z]
9) [^abc] ^在中括号里面表示非,不包含a或b或c
10) {n,m} 重复n到m次,前一个字符

举个例子:
57
58
59
60
61
62
63
64
65
66
67
68
69
70
再举一个例子:
71
72
73
74
75
76
77
78
79
80
81
82
83

规则没有写好导致没有下载到大部分图片,
但是基本步骤就是这样,重点是规则写好匹配得上才能下载大部分图片。
grep -Eo 'https[a-z.:/\-]+img.com.cn/t_s[0-9a-zA-Z/_-]+\.jpg' 
url.txt |awk '{print "wget "$1}' |/bin/bash

查IP

5.正则过滤例子2

正则表达式练习
1.从phpone.txt文本中的手机号码过滤出所有联通130/131/132号段的手机号码2.找出手机靓号(如带连续3个以上连续相同数字的,如有8888或者9999)grep -E '^1[0-9]{10}$' phone.txt|grep -E'000+|111+|222+|333+|444+|555+|666+|777+|888+|999'grep -E '^1[0-9]{10}$' phone.txt|grep -E '000+$|111+$|222+$|333+$|444+$|555+$|666+$|777+$|888+$|999+$'

84
85
86
87
88

3.将下列文本中的手机号码提取出来
http://so.qqdna.com/nub/15912345678.html
http://so.qqdna.com/nub/13711223344.html
http://so.qqdna.com/nub/13511223344.html
http://so.qqdna.com/nub/13311223344.html
http://so.qqdna.com/nub/13911223344.html
http://so.qqdna.com/nub/13312345678.html

89
90

4.找出弱密码,密码长度低于8或者只有纯数字或者纯字母的为弱密码
答案:grep -E '^.{1,7}$|^[0-9]+$|^[a-z]+$|^[A-Z]+$' mima.txt 

91
92
93
94

5.过滤出正确的邮箱地址
答案:grep -E '^[0-9a-zA-Z]+@.*\.[a-z]+$' mail.txt 

95
96

6.批量下载页面上的jpg图片,给出详细命令
答案:grep -E 'src="https:[^"]+' tupian.txt grep -Eo 'src="https:[^"]+' tupian.txt |grep 'jpg$'|sed 's#src="##g'grep -Eo 'src="https:[^"]+' tupian.txt |grep -E 'jpg$|png$'|sed 's#src="##g'grep -Eo 'src="https:[^"]+' tupian.txt |grep -E 'jpg$|png$'|sed 's#src="##g' |awk '{print "wget "$1}' |/bin/bashgrep -Eo 'src="https:[^"]+' tupian.txt |grep -E '\.jpg|\.png'|sed 's#src="##g' |awk '{print "wget "$1}' |/bin/bashgrep -Eo 'src="https:[^"]+' curl "https://desk.zol.com.cn/fengjing/1920x1080/" |grep -E 'jpg$|png$'|sed 's#src="##g' |awk '{print "wget "$1}' |/bin/bash

97
98
99
100
101
102
103
104
105
106
107
菜鸟教程-正则表达式


总结

以上就是今天要讲的内容,三剑客和正则表达式要学习的知识点非常多,而且这一块知识比较绕,容易让人感到云里雾里的,要把每句的意思理解了才能运用自如,还远远不够,需要经常反复练习。

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

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

相关文章

【深度学习】YOLOv8训练,交通灯目标检测

文章目录 一、数据处理二、环境三、训练 一、数据处理 import traceback import xml.etree.ElementTree as ET import os import shutil import random import cv2 import numpy as np from tqdm import tqdmdef convert_annotation_to_list(xml_filepath, size_width, size_he…

海山数据库(He3DB)代理ProxySQL使用详解:(二)功能实测

读写分离实测 ProxySQL官方demo演示了三种读写分离的方式&#xff1a;使用不同的端口进行读写分离、使用正则表达式进行通用的读写分离、使用正则和digest进行更智能的读写分离。最后一种是针对特定业务进行的优化调整&#xff0c;也可将其归结为第二种方式&#xff0c;下边分…

MySQL备份与日志练习

1、创建对mysql数据库test1的定时备份任务&#xff0c;频率是每周一的2点 create database test1;crond -e0 2 * * 1 mysqldump -u root -pAdmin123 --databases test1 > /opt/test1.sql2、test1中有t1、t2、t3三张表&#xff0c;要求只备份t2这张表 mysqldump -u root -pA…

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明

Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 目录 Python 机器学习 基础 之 数据表示与特征工程 【单变量非线性变换 / 自动化特征选择/利用专家知识】的简单说明 一、简单介绍 二、单变量非线性变换 三、自…

知识图谱数据预处理笔记

知识图谱数据预处理笔记 0. 引言1. 笔记1-1. \的转义1-2. 特殊符号的清理1-3. 检查结尾是否正常1-4. 检查<>是否存在1-5. 两端空格的清理1-6. 检查object内容长时是否以<开始 0. 引言 最近学习知识图谱&#xff0c;发现数据有很多问题&#xff0c;这篇笔记记录遇到的…

软件设计师备考笔记(九):数据库技术基础

文章目录 一、基本概念二、数据模型&#xff08;一&#xff09;基本概念&#xff08;二&#xff09;E-R模型&#xff08;三&#xff09;数据模型 三、关系代数&#xff08;一&#xff09;关系数据库的基本概念&#xff08;二&#xff09;五种基本的关系代数运算&#xff08;三&…

bugku 网络安全事件应急响应

开启靶场&#xff1a; 开始实验&#xff1a; 使用Xshell登录服务器&#xff0c;账号及密码如上图。 1、提交攻击者的IP地址 WP: 找到服务器日志路径&#xff0c;通常是在/var/log/&#xff0c;使用cd /var/log/&#xff0c;ls查看此路径下的文件. 找到nginx文件夹。 进入ng…

【Jenkins】Centos7安装Jenkins(环境:JDK11,tomcat9,maven3.8)

目录 Jenkins部署环境Maven安装1.上传安装包2.解压3.配置Maven环境变量4.使配置文件立即生效5.校验Maven安装6.Maven配置阿里云仓库7.Maven配置依赖下载位置 Git安装安装监测安装 JDK17安装1.查看旧版本JDK2.卸载旧版本JDK3.查看是否卸载干净4.创建java目录5.下载JDK11安装包6.…

Excel中Lookup函数

#Excel查找函数最常用的是Vlookup&#xff0c;而且是经常用其精确查找。Lookup函数的强大之处在于其“二分法”的原理。 LOOKUP&#xff08;查找值&#xff0c;查找区域&#xff08;Vector/Array&#xff09;&#xff0c;[返回结果区域]&#xff09; 为什么查找区域必须升序/…

【UE HTTP】“BlueprintHTTP Server - A Web Server for Unreal Engine”插件使用记录

1. 在商城中下载“BlueprintHTTP Server - A Web Server for Unreal Engine”插件 该插件的主要功能有如下3点&#xff1a; &#xff08;1&#xff09;监听客户端请求。 &#xff08;2&#xff09;可以将文件直接从Unreal Engine应用程序提供到Web。 &#xff08;3&#xff…

Antd Vue项目引入TailwindCss之后出现svg icon下移,布局中的问题解决方案

目录 1. 现象&#xff1a; 2. 原因分析&#xff1a; 3. 解决方案&#xff1a; 写法一&#xff1a;扩展Preflight 写法二&#xff1a; 4. 禁用 Preflight 1. 现象&#xff1a; Antd Vue项目引入TailwindCss之后出现svg icon下移&#xff0c;不能对齐显示的情况&#xff0…

k8s笔记 | Prometheus安装

kube-prometheus 基于github安装 选择对应的版本 这里选择 https://github.com/prometheus-operator/kube-prometheus/tree/release-0.11 下载修改为国内镜像源 image: quay.io 改为 quay.mirrors.ustc.edu.cn image: k8s.gcr.io 改为 lank8s.cn 创建 prometheus-ingres…

在AndroidStudio创建虚拟手机DUB-AI20

1.DUB-AI20介绍 DUB-AL20是华为畅享9全网通机型。 华为畅享9采用基于Android 8.1定制的EMUI 8.2系统&#xff0c;最大的亮点是配置了1300万AI双摄、4000mAh大电池以及AI人脸识别功能&#xff0c;支持熄屏快拍、笑脸抓拍、声控拍照、手势拍照等特色的拍照功能&#xff0c;支持移…

Windows安装mingw32/w64

1.下载 MinGW-w64 WinLibs - GCCMinGW-w64 compiler for Windows Releases niXman/mingw-builds-binaries (github.com) MinGW-w64、UCRT 和 MSVCRT 是 Windows 平台上常用的 C/C 运行库&#xff0c;它们有以下不同点&#xff1a; MinGW-w64&#xff1a;是一个基于 GCC 的…

【数据结构】【C语言】堆~动画超详细解读!

目录 1 什么是堆1.1 堆的逻辑结构和物理结构1.2 堆的访问1.3 堆为什么物理结构上要用数组?1.4 堆数据上的特点 2 堆的实现2.1 堆类型定义2.2 需要实现的接口2.3 初始化堆2.4 销毁堆2.5 堆判空2.6 交换函数2.7 向上调整(小堆)2.8 向下调整(小堆)2.9 堆插入2.10 堆删除2.11 //堆…

微服务项目收获和总结---第2,3天(分库分表思想,文章业务)

①分库分表思想 文章表一对一为什么要拆分&#xff1f;因为文章的内容会非常大&#xff0c;查询效率会很低&#xff0c;我们经常操作文章的基本信息&#xff0c;不会很经常查询文章内容。充分发挥高频数据的操作效率。 ②freemarker和minIO 由于文章内容数据量过大&#xff0c…

办公自动化-Python如何提取Word标题并保存到Excel中?

办公自动化-Python如何提取Word标题并保存到Excel中&#xff1f; 应用场景需求分析实现思路实现过程安装依赖库打开需求文件获取word中所有标题去除不需要的标题创建工作簿和工作表分割标题功能名称存入测试对象GN-TC需求标识符存入测试项标识存入需求标识符 完整源码实现效果学…

Vue02-黑马程序员学习笔记

一、今日学习目标 1.指令补充 指令修饰符v-bind对样式增强的操作v-model应用于其他表单元素 2.computed计算属性 基础语法计算属性vs方法计算属性的完整写法成绩案例 3.watch侦听器 基础写法完整写法 4.综合案例 &#xff08;演示&#xff09; 渲染 / 删除 / 修改数量 …

一个简约高级视差效果PR动态图文开场视频模板

这是一个高质量且易于定制的pr模板。具有模块化结构&#xff0c;可以轻松更改内容。包括视频教程&#xff0c;即使是新手小白也可以轻松套用模板制作视频。 主要特点&#xff1a; 水平&#xff08;19201080&#xff09;和垂直&#xff08;10801920&#xff09;分辨率&#xff…

c语言:利用随机函数产生20个[120, 834] 之间互不相等的随机数, 并利用选择排序法将其从小到大排序后输出(每行输出5个)

利用随机函数产生20个[120, 834] 之间互不相等的随机数&#xff0c; 并利用选择排序法将其从小到大排序后输出&#xff08;每行输出5个&#xff09; 代码如下&#xff1a; #include <stdio.h> #include <time.h> #include <stdlib.h> int shenchen(int a[…