linux 正则表达式与实践
正则表达式基础
准备
(1)alias grep='grep --color=auto' 易于显示
(2)LC_ALL=C,字符集,设置环境变量,字符顺序
基础正则
1)^word 匹配以Word开头的内容 vi/vim 里^代表一行的开头
2)word$ 匹配以Word结尾的内容 vi/vim 里$代表一行的结尾
3)^$ 表示空行
#过滤空行,并显示行号
[root@wen data]# grep -n "^$" lrs.txt
2:
4:
6:
8:
#过滤掉所有空行不显示
[root@wen data]# grep -v "^$" lrs.txt
You're in a battle with
A bulletproof heart
You really got me, got me
A bulletproof heart.
4). 代表且只能代表任意一个字符
5)\ 转义符号,让特殊字符显示其原型 \$ \.
6)* 重复0个或多个前面一个字符,例 o* 匹配 没有o 有一个或多个 oo oooooo……
7).* 匹配所有字符 延伸 ^.*以任意多个字符开头 .*$以任意多个字符结尾
点(.)含义总结
1.当前目录
2.使得文件生效 相当于source
3.隐藏文件
4.任意一个字符(grep正则)
#只显示匹配到的内容
[root@wen data]# grep -on "you" lrs.txt
9:you
12:you
8).[abc] 匹配字符集合内的任意一个字符[a-zA-Z],[0-9]
9).[~abc] 匹配不包含~后的任意一个字符的内容
~为去反,注意和中括号外面以……开头区别
[root@wen data]# grep "[~ot]" lrs.txt
10.a\{n,m\} 重复n到m次,前一个重复的字符 如果用egrep/sed -r 可以去掉斜线
a\{n,\} 重复至少n次,前一个重复字符 如果用egrep或sed -r 可以去掉斜线
a\{n\} 重复n次,前一个重复字符 如果用egrep/sed -r 可以去掉斜线
a\{,m\} 重复最多m次
扩展
11. + 表示 重复一个或一个以上 前面的字符(*是0或多个)
[root@wen data]# grep -E "on+" lrs.txt
So if you don't know how to
I'm not gonna break your fall.
12. ? 表示 0或一个 前面的字符(.是有且只有一个)
13. | 表示同时过滤多个字符串
root@wen data]# grep -E "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
14.() 分组过滤,后向引用
[root@wen data]# grep -E "g(la|oo)d" lrs.txt
glad
good
#POSIX字符类(了解)
[:lower:] 匹配小写(麻烦,直接用下面的例子)
root@wen data]# grep -E "[a-z]" lrs.txt
You're in a battle with
A bulletproof heart
You really got me, got me
A bulletproof heart.
#元字符
\b 单词边界 只过滤单词
[root@wen data]# grep -E "\byou\b" lrs.txt
So if you don't know how to
[root@wen data]# grep -E "you" lrs.txt
So if you don't know how to
I'm not gonna break your fall.
#三剑客grep总结
-a 在二进制文件中,以文本文件的方式搜索数据
-c 计算找到“搜索字符串”的次数
-o 仅显示出匹配grep的内容(用于统计出现在文中的次数)
-i 忽略大小写的不同,所有大小写视为相同
-n 匹配的内容在其行首显示行号
-v 反向选择,即显示没有“搜索字符串”内容的那一行
-E 扩展的grep ,即egrep
--color=auto 以特定颜色高亮显示匹配关键字
-C #除了显示匹配行外,显示该行前后的num行
-B #除了显示匹配行外,显示该行之前的num行
-A #除了显示匹配行外,显示该行之后的num行
正则表达式实战
一,将第一列与最后一列交换位置
[root@wen data]# tail /etc/passwd
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
mygirl:x:500:500::/home/mygirl:/bin/bash
fadewalk:x:501:501::/home/fadewalk:/bin/bash
[root@wen data]# tail /etc/passwd |sed -nr 's#([^:]+)(:.*:)(/.*$)#\3\2\1#gp' #第一个([^:])取非:开头的
/sbin/nologin:x:69:69:virtual console memory owner:/dev:vcsa
/sbin/nologin:x:173:173::/etc/abrt:abrt
/sbin/nologin:x:68:68:HAL daemon:/:haldaemon
/sbin/nologin:x:38:38::/etc/ntp:ntp
/sbin/nologin:x:499:76:Saslauthd user:/var/empty/saslauth:saslauth
/sbin/nologin:x:89:89::/var/spool/postfix:postfix
/sbin/nologin:x:74:74:Privilege-separated SSH:/var/empty/sshd:sshd
/sbin/nologin:x:72:72::/:tcpdump
/bin/bash:x:500:500::/home/mygirl:mygirl
/bin/bash:x:501:501::/home/fadewalk:fadewalk
二,取IP或数字
1.取数字
[root@wen ~]# ifconfig | sed -nr 's#^.*dr:(.*) B.*$#\1#gp'
192.168.59.130
[root@wen ~]# stat /etc/hosts
File: "/etc/hosts"
Size: 158 Blocks: 8 IO Block: 4096 普通文件
Device: 802h/2050d Inode: 40 Links: 2
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2017-10-11 20:22:15.436493668 +0800
Modify: 2010-01-12 21:28:22.000000000 +0800
Change: 2017-08-30 05:59:08.040858188 +0800
取出644
[root@wen ~]# stat /etc/hosts|sed -nr 's#^.*0(.*)/-rw.*$#\1#gp'
644
[root@wen ~]# stat /etc/hosts|sed -nr 's#^.*\(0(.*)/-rw.*$#\1#gp'
644
2.取IP
[root@wen data]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:E9:95:DD
inet addr:192.168.59.130 Bcast:192.168.59.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fee9:95dd/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6964 errors:0 dropped:0 overruns:0 frame:0
TX packets:4430 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:606332 (592.1 KiB) TX bytes:489934 (478.4 KiB)
[root@wen ~]# ifconfig | sed -n '2s#^.*dr:##p'|sed 's# B.*$##g'
192.168.59.130
grep取IP
[root@wen ~]# ifconfig eth0 |grep "ddr:[0-9.]*"
inet addr:192.168.13.128 Bcast:192.168.13.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fee9:95dd/64 Scope:Link
[root@wen ~]# ifconfig eth0 |grep -o "inet addr:[0-9.]*"
inet addr:192.168.13.128
[root@wen ~]# ifconfig eth0 |grep -o "inet addr:[0-9.]*"|grep -o "[0-9]*"
192
168
13
128
[root@wen ~]# ifconfig eth0 |grep -o "inet addr:[0-9.]*"|grep -o "[0-9.]*"
192.168.13.128
linux 正则表达式与实践的更多相关文章
- linux正则表达式企业级深度实践案例1
linux正则表达式结合三剑客企业级实践: 1.取系统ip [root@redhat~]# ifconfig eth0 解答: 替换命令: sed 's#支持正则位置##g' file 先取第 ...
- Linux 正则表达式_010
Linux 正则表达式 标注:本教程只针对linux运维的三剑客命令awk,sed,grep正则表达式 什么是正则表达式? 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法通过定义的这 ...
- Linux 正则表达式与文本处理器 三剑客
Linux 正则表达式与文本处理器 三剑客 一.正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在linu ...
- Linux正则表达式与grep
bash是什么 bash是一个命令处理器,运行在文本窗口中,并能执行用户直接输入的命令 bash还能从文件中读取linxu命令,称之为脚本 bash支持通配符.管道.命令替换.条件判断等逻辑控制语句 ...
- paip.java win程序迁移linux的最佳实践
paip.java win程序迁移linux的最佳实践 1.class load路径的问题... windows哈第一的从calsses目录加载,,而linux优先从jar加载.. 特别的是修理了ja ...
- 【转载】Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载六)Linux的网络配置
本篇是Linux小白最佳实践第6篇,目的就是让白菜们了解Linux网络是如何配置的.Linux系统在服务器市场占有很大的份额,尤其在互连网时代,要使用计算机就离不开网络. 想每天能听到小妞的语音播报, ...
- Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载五)Linux系统的对话方式
本篇是Linux小白最佳实践第5篇,目的就是让白菜们了解Linux进程之间是如何对话的.之前连载的几篇,在微信上引起了很多的反响,有人也反映图多文字少,感觉没有干货.本篇选了大部分是实战讲解的&quo ...
- linux正则表达式之-基础正则表达式(基于grep)
linux正则表达式: 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法,如:假设@代表123456,!代表abcde.通过定义的这些特殊符号的铺助,系统管理员就可以快速的过滤,替换或 ...
- 关于清晰讲解linux正则表达式的博文分享
http://www.cnblogs.com/chengmo/archive/2010/10/10/1847287.html linux shell 正则表达式(BREs,EREs,PREs)差异比 ...
随机推荐
- JVisualVM 模拟一次内存泄漏场景分析
首先贴一段内存泄漏的代码并且执行.(内存泄漏:GC回收不掉的实例对象) package com.example.demo.memoryLeakDemo; import com.example.demo ...
- .Net core 2.0 利用Attribute获取MVC Action来生成菜单
最近在学习.net core的同时将老师的MVC5项目中的模块搬过来用,其中有一块就是利用Attribute来生成菜单. 一·首先定义Action实体 /// <summary> /// ...
- hacking 学习站
综合 idf实验室:http://ctf.idf.cn/ writeup: 部分参见本博 网络信息安全攻防学习平台:http://hackinglab.cn/ writeup: 部分参见本博 WeCh ...
- 洛谷 P5019 铺设道路 & [NOIP2018提高组](贪心)
题目链接 https://www.luogu.org/problem/P5019 解题思路 一道典型的贪心题. 假设从左往右填坑,如果第i个深与第i+1个,那么第i+1个就不需要额外填: 如果第i+1 ...
- [Codeforces 1178D]Prime Graph (思维+数学)
Codeforces 1178D (思维+数学) 题面 给出正整数n(不一定是质数),构造一个边数为质数的无向连通图(无自环重边),且图的每个节点的度数为质数 分析 我们先构造一个环,每个点的度数都是 ...
- python的小介绍
Python简介 龟叔 优美.清晰.简单 主要应用领域: 云计算 WEB开发 科学技术.人工智能 系统运维 爬虫 金融量化分析 图形GUI 游戏 Python发展史 1989年,Guido开始写Pyt ...
- python学习第一天变量命名规范和变量作用
变量的命名 python中的变量跟其他编程语言变量一样 1,由字母,下划线,数字组成 2,数字不能做变量名开头 3,变量名尽量有意义和短,,也可以驼峰,不要很low ,比如说是 中文,变量名很长 py ...
- 攻防世界--Shuffle
测试文件:https://adworld.xctf.org.cn/media/task/attachments/a03353e605bc436798a7cabfb11be073 1.准备 获得信息 3 ...
- git账号失效问题解决
linux开发机上,使用某人账号,进行代码同步.该员工离职,导致该git账号不可用. 此时需要完成3步配置: 1.生成新的公私秘钥:在~/.ssh/config中把私钥文件路径 append到文件末尾 ...
- 【学习总结】java数据结构和算法-第二章-数据结构和算法概述
总目录链接 [学习总结]尚硅谷2019java数据结构和算法 github:javaDSA 目录 数据结构和算法的关系 几个实际编程中的问题 线性结构和非线性结构 数据结构和算法的关系 几个实际编程中 ...