本文主要是介绍【三剑客和正则表达式】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 学习目标
- 一、什么是三剑客
- 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 扩展正则表达式
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
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代表行号
过滤文本
文本拼凑
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次,前一个字符
举个例子:
再举一个例子:
规则没有写好导致没有下载到大部分图片,
但是基本步骤就是这样,重点是规则写好匹配得上才能下载大部分图片。
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+$'
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
4.找出弱密码,密码长度低于8或者只有纯数字或者纯字母的为弱密码
答案:grep -E '^.{1,7}$|^[0-9]+$|^[a-z]+$|^[A-Z]+$' mima.txt
5.过滤出正确的邮箱地址
答案:grep -E '^[0-9a-zA-Z]+@.*\.[a-z]+$' mail.txt
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
菜鸟教程-正则表达式
总结
以上就是今天要讲的内容,三剑客和正则表达式要学习的知识点非常多,而且这一块知识比较绕,容易让人感到云里雾里的,要把每句的意思理解了才能运用自如,还远远不够,需要经常反复练习。
这篇关于【三剑客和正则表达式】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!