【三剑客和正则表达式】

2024-05-24 08:04
文章标签 正则表达式 三剑客

本文主要是介绍【三剑客和正则表达式】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 学习目标
  • 一、什么是三剑客
    • 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.chinasem.cn/article/997837

相关文章

JavaScript正则表达式六大利器:`test`、`exec`、`match`、`matchAll`、`search`与`replace`详解及对比

在JavaScript中,正则表达式(Regular Expression)是一种用于文本搜索、替换、匹配和验证的强大工具。本文将深入解析与正则表达式相关的几个主要执行方法:test、exec、match、matchAll、search和replace,并对它们进行对比,帮助开发者更好地理解这些方法的使用场景和差异。 正则表达式基础 在深入解析方法之前,先简要回顾一下正则表达式的基础知识。正则

匹配电子邮件地址的正则表达式

这个正则表达式 QRegularExpression regex(R"((\w+)(\.|_)?(\w+)@(\w+)(\.(\w+))+))"); 用于匹配电子邮件地址的格式。下面是对这个正则表达式的逐步解析和解释: 1. QRegularExpression 构造函数 QRegularExpression regex(R"((\w+)(\.|_)?(\w*)@(\w+)(\.(\w+))+

notepad++ 正则表达式多条件查找替换

基础语法参考: https://www.cnblogs.com/winstonet/p/10635043.html https://www.linuxidc.com/Linux/2019-05/158701.htm   通常情况下我们查找的内容和要被替换掉的内容是一样的,我们只需要使用正则表达式精确框定查找内容,替换直接输入要替换的内容即可。 但有时会比较复杂,查找的内容,只需要替换其中

js正则表达式test方法的问题

今天在网上碰到一个帖子,写了一个关于Regex的奇怪现象,(文章来源http://www.php100.com/html/webkaifa/javascript/2007/0109/1866.html) 代码如下 <script type="text/javascript"><!--var re = /^\d+(?:\.\d)?$/ig; alert(re.test('112.3'

Java利用正则表达式获取指定两个字符串之间的内容

package com.starit.analyse.util;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class DealSt

AS3中正则表达式中如何表达“或”

var reg:RegExp=/\r|\n|\t/g;                 var msg:String="123\rabc\n\tabc\ta\123";                 msg=msg.replace(reg,"");                 trace(msg);

as3 正则表达式(比较齐全)

正则表达式是AS3比较重要的一个部分,具体内容如下:   //正则表达式有四个部分。1元子符。2元序列。3标志。4数量表达符。 //下面是元字符部分 //现在我们来看看元字符: ^ $ \ . * + ? ( ) [ ] { } | //^匹配字符串的开头 varpattern:RegExp=/^小虫/; var str:String="小虫是好人"; trace(str, " is

as3 常用正则表达式(来自天地会论坛之七夜)

正则表达式是一种通用的标准,大部分计算机语言都支持正则表达式,包括as3,这里转摘出了一些常用的正则表达式语句,大家用到的时候就不用自己写了。 红色字体为常用正则: 下面这个类是我自己写的一个示例,想必大家做客户端,用户登录信息肯定会用的正则表达式。 package com.qiye.regexp { /**   * 常用正则表达式。   * @author Qiy

认识正则表达式

为什么要学习正则表达式 因为爬虫需要!!! 一般来说爬虫需要四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网站去搜索)爬 (将所有的网站的内容全部爬下来)取 (去掉对我们没用处的数据)处理数据(按照我们想要的方式存储和使用) 一般情况我们拉取的网页数据庞大并且很混乱,其中很大一部分东西是我们不关心的,因此我们需要将其按要求过滤和匹配出来。 那么对于文本的过滤和指定规则的匹配,最

C语言的一个正则表达式pcre

1. 简介 在C/C++中,一个比较好的正则表达式是pcre,被很多工具(包括一些商用工具)使用。 2. 源码下载&安装 2.1 下载 可以从官网http://www.pcre.org/下载,为方便学习,已放在这里http://download.csdn.net/detail/u013344915/7793027。 2.2 Windows上的安装过程 参考:Windows上面编译pc