【三剑客和正则表达式】

文章目录

  • 学习目标
  • 一、什么是三剑客
    • 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]]funciton
	n1,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.txt
	awk '{print $1,$7}'  /etc/passwd

eg2:指定分割符
	awk -F ":"  '{print $1,$7}'  /etc/passwd
	#[ /]+空格 和斜杠/为分隔符,+代表合并连续的分隔符
	awk -F "[ /]+"  '{print  $2}'  1.txt

eg3:拼凑指定文本,双引号之间原样输出
	awk -F ":"  '{print $1":123:"$7}'  /etc/passwd

eg4:过滤文本
	awk -F "[ /]+"  '$2~/^47/' 1.txt

eg5:根据行号筛选内容
	awk 'NR<=3{print $0}' 1.txt	 
	# 大于>   小于<  等于==   大于等于>=   小于等于<=

awk:$0代表整行,$1代表第一列,$2代表第二列...第十列$10
	最后一列$NF
	NR代表行号

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/bash

	grep -Eo 'src="https:[^"]+' tupian.txt |grep -E 
		'\.jpg|\.png'|sed 's#src="##g' |awk '{print "wget "$1}' |/bin/bash

	grep -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
菜鸟教程-正则表达式


总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AI整体架构设计5:CN+AI的三国杀

本文最后的图展示了气势磅礴的AICN&#xff08;云原生&#xff09;的技术栈&#xff0c;潜藏着无限的杀机。还在云原生的时候&#xff0c;研发和运维一直围绕着Devops进行两国杀。CNAI的时代&#xff0c;数据科学家加入了战局&#xff0c;彻底变成三国杀。边界的不断互相渗透&a…

【设计模式】JAVA Design Patterns——Combinator(功能模式)

&#x1f50d;目的 功能模式代表了一种以组合功能为中心的图书馆组织风格。 简单地说&#xff0c;有一些类型 T&#xff0c;一些用于构造类型 T 的“原始”值的函数&#xff0c;以及一些可以以各种方式组合类型 T 的值以构建更复杂的类型 T 值的“组合器” &#x1f50d;解释 真…

ubuntu20.04 10分钟搭建无延迟大疆无人机多线程流媒体服务器

1.使用效果 无人机画面 2.服务器视频端口 3.使用教程 3.1.下载ubuntu对应软件包&#xff1a;系统要求ubuntu16以上 3.2修改端口&#xff08;config.xml文件&#xff09; 3.3启动服务 目录下输入&#xff1a;终端启动&#xff1a;./smart_rtmpd 后台启动&#xff1a;nohup ./…

Pip,whl,源码编译安装Python库

pip安装 pip 是 Python 包管理工具&#xff0c;用于安装和管理 Python 包。pip 是 Python 开发中不可或缺的工具&#xff0c;能够帮助开发者轻松地管理项目所需的各种库和依赖。无论是安装新包、升级现有包还是卸载不需要的包&#xff0c;pip 都提供了简单而强大的命令来完成这…

92.网络游戏逆向分析与漏洞攻防-游戏技能系统分析-利用哈希表实现快速读取文本内容

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

k8s dashboard安装

本案例&#xff0c;k8s版本为v1.22.17&#xff0c;所以安装v2.7.0版本的dashboard 1、下载dashboard的yaml文件 curl -O https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 2、修改recommended.yaml文件 修改定义的Service&…

java版本spring cloud-spring boot高效知识付费SaaS平台的架构与功能模块设计

知识付费平台是一种快速发展的在线教育模式&#xff0c;它以满足用户需求为核心&#xff0c;提供便捷高效的学习渠道。该平台汇聚了各类专业知识&#xff0c;覆盖职业技能、生活兴趣和人文社科等多个领域&#xff0c;满足不同用户的学习需求。同时&#xff0c;平台还提供视频播…

通过 PW6606 快充电压诱骗芯片,了解 USB-A 与 USB-C 快充协议

充电器一般分两种&#xff1a; 1&#xff0c; A 口充电器&#xff0c;就是我们常见的 USB 口&#xff0c;如下图&#xff0c;这种通用快充协议叫&#xff1a; QC3.0,QC2.0 快充&#xff0c;是属于快充刚开始的充电协议&#xff0c;支持 5V,9V,12V 和 20V 电压输出充电器&#x…

聚观早报 | 拼多多第一季度营收;苹果2024款彩虹表带上市

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 5月24日消息 拼多多第一季度营收 苹果2024款彩虹表带上市 小米汽车智驾将提速 iPhone 16 Pro Max将用最大屏幕 …

20240520解决在Ubuntu20.04下编译RK3588的Android12的SDK出现C2_GIT_BUILD_VERSION未定义的问题

20240520解决在Ubuntu20.04下编译RK3588的Android12的SDK出现C2_GIT_BUILD_VERSION未定义的问题 2024/5/20 20:19 缘起&#xff1a;通过./repo/repo/repo sync -l得到的SDK正常&#xff0c;但是解压缩之后的SDK却出错了&#xff01; 通过grep很容易发现有三个地方有&#xff0c…

Jenkins 构建 Maven 项目:项目和服务器在一起的情况

bash.sh内容 #!/bin/bash#删除历史数据 rm -rf ruoyi-admin.jar# appname$1 appnamevideo.xxxxx.com #获取传入的参数 echo "arg:$appname"#获取正在运行的jar包pid # pidps -ef | grep $1 | grep java -jar | awk {printf $2} pidps -ef | grep $appname | grep ja…

【加密与解密(第四版)】第十三章笔记

第十三章 HOOK技术 13.1 Hook概述 IAT HOOK&#xff08;改地址&#xff09; BOOL IAT_InstallHook(){BOOL bResult FALSE ;HMODULE hCurExe GetModuleHandle(NULL);PULONG_PTR pt ;ULONG_PTR OrginalAddr;bResult InstallModuleIATHook(hCurExe,"user32.dll",&qu…

将联表查询到的数据按1000一批次存入数据库-模板

idea模板&#xff1a; /*** ${Shitilei}信息 服务层实现。** author admin*/ Service RequiredArgsConstructor public class Operate${Shitilei}Service {private final ${Shitilei}Mapper ${shitilei}Mapper;private final RegionUtil util;/*** ${shitilei}表* return 操作结…

解决Ubuntu无法使用root登录的问题

1、登录普通用户 2、使用vi编辑器打开/etc/pam.d/gdm-autologin并注释掉auth required pam_succeed_if.so user ! root quiet_success 3、使用vi编辑器打开/etc/pam.d/gdm-password并注释掉auth required pam_succeed_if.so user ! root quiet_success 4、注销用户重新用roo…

【网络协议】【OSI】一次HTTP请求OSI工作过程详细解析

目录 1. 一次HTTP请求OSI工作过程 1.1 应用层&#xff08;第7层&#xff09; 1.2 表示层&#xff08;第6层&#xff09; 1.3 会话层&#xff08;第5层&#xff09; 1.4 传输层&#xff08;第4层&#xff09; 1.5 网络层&#xff08;第3层&#xff09; 1.6 数据链路层&am…

Z缓冲技术在AI去衣中的关键角色

引言&#xff1a; 人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;为图像处理领域带来了革命性的变化。其中&#xff0c;AI去衣技术作为一种新兴的应用&#xff0c;引起了广泛关注。它不仅在多媒体内容的编辑、虚拟现实和增强现实等领域具有重要的应用价值&…

Java八大类型详解

整数类型 (4种) 整数的类型 类型占用内存空间范围byte [字节]1字节-128 ~ 127存放的范围是>二进制short [短整型]2字节 -(2⁵) ~ 2⁵-1 -32768 ~ 32767 int [整形]4字节 -2 ~ 2-1 -2147483648 - 2147483647 long [长整形]8字节-2⁶ ~ 2⁶-1 整数类型的使用细节 1. Java个…

el-table 划入划出方法

<template><div><el-table :data"tableData" style"width: 100%" cell-mouse-enter"handleMouseEnter" cell-mouse-leave"handleMouseLeave"><el-table-column prop"ddd" label"日期2" widt…

Java 数组的基本使用

目录 含义语法格式语句特点数组的长度数组的元素打印数组显示数组数组的复制扩展示例【12】&#xff1a; 含义 数组&#xff08;array&#xff09;是一种最简单的复合数据类型&#xff0c;它是有序数据的集合&#xff0c;数组中的每个元素具有相同的数据类型&#xff0c;可以用…

Mysql基础教程(06):NOT IN

数据准备 首先创建一个数据库educational_manage&#xff0c;记住字符集和排序规则如下选择&#xff1a; 接着创建表和数据&#xff0c;具体的sql代码如下&#xff1a; SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure f…