系统通配符号、系统正则符号,grep

1 系统通配符号

系统通配符号:借助通配符号 匹配文件名称信息

1.1 *: 匹配所有(任意)字符信息

找寻以old开头的文件

find /oldboy -type f -name "old*"

找寻以.txt结尾的文件

find /oldboy -type f -name "*txt"

找寻以old开头,txt结尾的文件

find /oldboy -type f -name "old*txt"

1.2 {}: 批量创建数据信息

echo{01..03}    echo {01..06..2}    echo {01,03,05}

不同序列信息,可以进行组合
echo A{A,B} echo A{A,} echo A{,B}

在这里,可以用序列组合来进行快速备份数据,快速还原数据。

1.2.1 快速备份网卡配置文件:

cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.bak} #备份命令
ll /etc/sysconfig/network-scripts/ifcfg-eth0* #查询备份成功

1.2.2 快速还原网卡配置文件:

cp /etc/sysconfig/network-scripts/ifcfg-eth0{.bak,}

2 系统正则符合

系统正则符号:借助正则符号 匹配文件内容信息
基础正则符号:grep sed awk识别
扩展正则符号:grep -E、egrep、sed -r、awk、grep '\扩展正则符号'

2.1 基础正则符号

以下命令执行所需环境
cat >> oldboy.txt <<EOF
I am oldboy teacher!
I teach linux.

I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.

not 4900000448.
my god ,i am not oldbey,but OLDBOY!
EOF

2.1.1 ^:以什么开头的信息进行过滤

grep "^I" oldboy.txt

2.1.2 $:以什么结尾的信息进行过滤

grep "g$" oldboy.txt

2.1.3 ^$:将查找的空行信息过滤

grep -v "^$" oldboy.txt

2.1.4 . 匹配任意一个且只有一个字符

grep . oldboy.txt -o	### -o表示命令执行过程


匹配一个字符并且一个字符一行显示出来

2.1.5 *:匹配前一个字符连续出现0次或者多次

grep "0*" oldboy.txt -o		### -o表示命令执行过程

grep "0*" oldboy.txt		### 查找0出现的次数

2.1.6 .*:匹配文件所有内容信息

grep "^m.*g" oldboy.txt	grep "^m.*g " oldboy.txt


.*具有贪婪匹配,会匹配命令里所有m-g的内容,如第一条命令执行的结果。第二条命令在g后面空格,给予限制,所以第二条执行结果会是m-g空格的内容。

2.1.7 \:还原字符的本来意思,转义符号

grep "\.$" oldboy.txt		###  ".$":表示查询所有有字符的行信息  "\.$":表示查询出以点结尾的行信息


将没有意义的字符信息,变成有意义的信息:
\t: 制表符 \n: 换行符 \r: 换行符

echo -e "oldboy01\noldboy02"		### \n: 换行符

2.1.8 [] :匹配多个字符信息(或者关系)

grep [a-z] oldboy.txt

2.1.9 [^]:排除指定的字符信息不要进行匹配

grep [^a-z] oldboy.txt	###  显示除a-z的所有内容信息

2.2 扩展正则符号

扩展正则符号

2.2.1 +:匹配前一个字符连续出现1次或者多次

grep -E "0+" oldboy.txt

2.2.2 |:匹配的信息之间是或者的关系

grep -Ev "^$|^#" oldboy.txt    ### 除去空行信息,以#开头信息

-v:命令取反意思 ^$:空行 ^#:以#开头

显示oldboy信息或者oldbey信息

grep -E "oldb(o|e)y" oldboy.txt

2.2.3 ():将多个字符信息汇总为一个整体进行过滤

替换修改文件内容,后项引用前项

echo 123456|sed "s#123456#<123456>#g"

echo 123456|sed -r "s#(.*)#<\1>#g"


(.):匹配之前echo 123456的结果。也就是123456
\1:取用之前(.
)的内容

echo 123456|sed -r "s#(.)(.)(.)(.)(.)(.)#\1#g"
echo 123456|sed -r "s#(.)(.)(.)(.)(.)(.)#\1\2#g"
echo 123456|sed -r "s#(.)(.)(.)(.)(.)(.)#<\1>\2\3\4\5\6#g"

2.2.4 {}:匹配前一个字符连续出现指定的次数

{n,m} :匹配前一个字符连续最少出现n次 最多出现m次
grep -E "0{3,5}" oldboy.txt :匹配0连续出现的次数

grep -E "0{3,5}" oldboy.txt -o -o:显示命令执行过程

{n} :匹配前一个字符连续正好出现n次
grep -E "0{3}" oldboy.txt 匹配0连续出现3次

{n,}:匹配前一个字符连续最少出现n次,最多出现次数没有限制
grep -E "0{2,}" oldboy.txt 匹配0最少2次,最多没有限制

grep -E "0{2,}" oldboy.txt -o

{,m}:匹配前一个字符连续最少出现0次,最多出现次数m次
grep -E "0{,4}" oldboy.txt

2.2.5 ?:匹配前一个字符连续出现0次或者1次

grep -E "o?" oldboy.txt

2.2.6 补充:* + ? 区别

*:匹配前一个字符连续出现0次或者多次
+:匹配前一个字符连续出现1次或者多次
?:匹配前一个字符连续出现0次或者1次
正则匹配信息:
(1)具有贪婪匹配特性:
(2)过滤时显示的信息不正确
grep过滤信息,过滤信息外面使用双引号
sed awk过滤信息,过滤信息外面使用单引号

3 练习题:如何取出IP地址

3.1 sed命令取ip

1、获取ip地址 ip address show eth0 =ip a s eth0

2、定位显示ip地址的信息行 ip a s eth0|sed -n '3p'

3、取出指定ip指定信息 ip a s eth0|sed -n '3p'|sed -r "s#^.t (.)#\1#g"

ip a s eth0|sed -n '3p'|sed -r "s#^.t (.)#\1#g"|sed -r 's#(.)/24.$#\1#g'

ip a s eth0|sed -n '3p'=inet 10.0.0.201/24 brd 10.0.0.255 scope global eth0
sed -r "s#^.t (.)#\1#g"=10.0.0.201/24 brd 10.0.0.255 scope global eth0
sed -r 's#(.)/24.$#\1#g'=10.0.0.201
4、命令整合:
(1)

sed -r 's#^.*t (.*)#\1#g'
sed -r 's#(.*)/24.*$#\1#g' sed -r 's#^.*t (.*)/24.*$#\1#g'
整合后:ip a s eth0|sed -n '3p'|sed -r 's#^.*t (.*)/24.*$#\1#g'

(2)

sed -n '3p'
sed -r 's#^.*t (.*)/24.*$#\1#g' sed -nr '3s#^.*t (.*)/24.*$#\1#gp'
整合后:ip a s eth0|sed -nr '3s#^.*t (.*)/24.*$#\1#gp'

3.2 grep命令取ip

1、获取ip地址: ip address show eth0

2、定位显示ip地址的信息行 ip a s eth0|grep -w inet
w:匹配整词,精确地单词,单词的两边必须是非字符符号(即不能是字母数字或下划线)

3、取出ip地址信息 ip a s eth0|grep -w inet|grep "[0-9]+.[0-9]+.[0-9]+.[0-9]+"
"[0-9]+.[0-9]+.[0-9]+.[0-9]+" 对应ip地址格式 +:匹配一个字符连续出现1次或者多次

ip a s eth0|grep -w inet|grep -E "[0-9]+.[0-9]+.[0-9]+.[0-9]+" -o|head -1

-o:显示命令执行过程
head -1:之前结果取第一行
命令执行:
整合:ip a s eth0|grep -w inet|grep -E "[0-9]+.[0-9]+.[0-9]+.[0-9]+" -o
整合后:ip a s eth0|grep -w inet|grep -E "([0-9]+.){3}[0-9]+" -o
([0-9]+.){3}:[0-9]+.出现3次,将[0-9]+.看成一个整体加上()指定出现3次加上{}=([0-9]+.){3}
ip a s eth0|grep -w inet|grep -E "([0-9]+.){4}" -o

"[0-9]+.[0-9]+.[0-9]+.[0-9]+" :在这里面,只有三次[0-9]+. 一次[0-9]+
将 "[0-9]+.[0-9]+.[0-9]+.[0-9]+" 变为"([0-9]+.){4}"实际上是多加了一个.(点)再执行命令中会显示出/
ip a s eth0|grep -w inet|grep -E "([0-9]+.?){4}" -o|head -1
这条命令中,要将.(点)取消
点===.?
\表示取点的特殊意义
?表示匹配前面字符出现0次或1次
"([0-9]+.?){4}"的结果为:10.0.0.201
10.0.0.255 取消之前的 / 了
再取第一行,也就是10.0.0.201了。

系统通配符号、系统正则符号,grep的更多相关文章

  1. centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~/.bash_profile 2015-4-10 第十三节课

    centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符  通配符 特殊符号. * + ? 总结  问加星 cat -n  nl  输出文件内容并加上行号 alias放~ ...

  2. linux学习14 Linux运维高级系统应用-glob通配及IO重定向

    一.回顾 1.bash基础特性:命令补全,路径补全,命令引用 2.文件或目录的复制,移动及删除操作 3.变量:变量类型 存储格式,数据表示范围,参与运算 二.bash的基础特性 1.globbing: ...

  3. 最全的三剑客和linux正则符号讲解

    第2章 linux符号系列与三剑客    194 2.1 特殊符号系列    194 2.1.1 普通符号系列    194 2.1.2 引号符号系列    196 2.1.3 定向符号    197 ...

  4. 通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击

    通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击 大家肯定知道前几天刚爆出来一个linux内核(Android也用的linux内核)的dirtycow漏洞.此洞可 ...

  5. java替换文本中所有的正则符号 Java问题通用解决代码

    开发时遇到一个需求,需要对一段文本中的所有正则符号进行转义,不然使用split分割方法分割文本的话无效,想到用替换来做,全部替换正则符号为转义后的符号   贴java实现代码:   1.测试版     ...

  6. 【 c语言中无符号和有符号的加法运算】【深入理解】--【sky原创】

    原文:[ c语言中无符号和有符号的加法运算][深入理解]--[sky原创]   第一题 #include<stdio.h> int main() { unsigned int a=6; i ...

  7. node_acl 路径通配

    最近做一个基于nodejs的权限管理,查阅了一两天,发现大致是这样的: passportjs node-oauth rbac node_acl express_acl connect-roles 需求 ...

  8. linux globbing文件名通配

    globbing:文件名通配 元字符: *:匹配任意长度的任意字符 ?:匹配任意单个字符 []:匹配指定范围内的任意单个字符 [a-z]或者[A-Z]或者[[:alpha:]]:匹配任意一个字母 [[ ...

  9. C语言中的强符号与弱符号

    转自:http://blog.csdn.net/astrotycoon/article/details/8008629 一.概述 在C语言中,函数和初始化的全局变量(包括显示初始化为0)是强符号,未初 ...

随机推荐

  1. svg如何设置中心点进行缩放

    中心点设置:x = x+width/2   y=y+height/2缩放开始前后需要变换对应的位置,直接举例:<rect x="110" y="100"  ...

  2. Vm安装虚拟机并使用net模式连接外网

    Vm安装虚拟机并使用net模式连接外网 最近想搭建一个maven私服和阿波罗配置中心一切准备就绪时 发现本地vm虚拟机无法连接外网,嗯 ~ ~ ,一句cnm不由从嘴里崩了出来.没办法,只能配置一下了接 ...

  3. Dae-Da-Lus小组idea集锦

    Dae-Da-Lus小组成员经过认真的思考,每一位同学都提出了自己对于Team Project的想法,暂时Mark在这里,以备查阅~ 曹士杰: 作为一个计算机专业的学生,我想我们应该是幸运的.计算机科 ...

  4. selenium 键盘鼠标模拟

    一.键盘模拟常用的键 sendKeys(Keys.BACK_SPACE);  //删除键--Backspace sendKeys(Keys.SPACE);   //空格键 Space sendKeys ...

  5. 为什么选择python?

    Why python? 那些最好的程序员不是为了得到更高的薪水或者得到公众的仰慕而编程,他们只是觉得这是一件有趣的事情. —— Linux 之父 Linux Torvalds 作为一个使用主义的学习者 ...

  6. 浅析 CSS 中的边距重叠

    浅析 CSS 中的边距重叠 边距重叠是什么 在说边距重叠之前,先以正常的思维来考虑如果你现在是浏览器引擎遇到这种情况应该怎么办? 现在有两个元素 div1 和 div2 紧挨着,中间没有它元素,它们的 ...

  7. 云开发静态网站托管现已支持 Angular 应用

    云开发静态托管是云开发提供的静态网站托管的能力,静态资源(HTML.CSS.JavaScript.字体等)的分发由腾讯云对象存储 COS 和拥有多个边缘网点的腾讯云 CDN 提供支持. 在云开发静态托 ...

  8. web前端该怎么入门?web前端入门教程(非常详细)

    初学编程的小伙伴经常会遇到的问题,1.没资源 2.没人带 3.不知道从何开始 ,小编也是从新手期过来的,所以很能理解萌新的难处,现在整理一些以前自己学习的一些资料送给大家,希望对广大初学小伙伴有帮助! ...

  9. 使用Reactor响应式编程

    介绍 响应式编程 响应式编程不同于我们熟悉的命令式编程,我们熟悉的命令式编程即代码就是一行接一行的指令,按照它们的顺序一次一条地出现.一个任务被执行,程序就需要等到它执行完了,才能执行下一个任务.每一 ...

  10. 2019-2020-1 20199303《Linux内核原理与分析》第六周作业

    系统调用的三层机制 首先是为系统增加新的命令 运行脚本自动生成文件系统 其中有一个显示时间的功能 编辑test.c文件,增加一个hello函数用来显示学号,再次使用make roofts自动编译,调用 ...