(转)linux正则表达式详解
linux正则表达式详解
http://blog.csdn.net/wuliowen/article/details/64131815
1:什么是正则表达式:
2:一些参数:
grep [-A] [-B] [--color=auto] '收索字符串' filename
452:[ 11.213498] 8021q: adding VLAN 0 to HW filter on deviceeth0
发现除了eth会有特殊的颜色,且加上行号显示。
451-[ 11.213482] All bugs added by David S. Miller <davem@redhat.com>
452:[ 11.213498] 8021q: adding VLAN 0 to HW filter on deviceeth0
453-[ 11.334391] cnic: Broadcom NetXtreme II CNIC Driver cnic v2.5.20 (March 14, 2014)
454-[ 11.355742] bnx2fc: Broadcom NetXtreme II FCoE Driver bnx2fc v2.4.2 (Dec 11, 2013)
455-[ 11.371077] netlink: 12 bytes leftover after parsing attributes.
三:基础正则表达式练习:
例1:查找特定字符串
5:Annabell:Cho:90:1
8:Rebecca:Fabry:60:1
[root@Master ~]#
1:Betsey:Werts:60:1
2:Henriette:Balla:30:1
3:Julieann:Hopps:30:2
4:Conrad:Menz:60:1
6:Allyn:Kenley:60:1
例2:利用中括号[]来查找集合字符。
例3:行首和行尾字符^$
2:Henriette:Balla:30:1
21:Elsa:Casazza:60:3
四:基础正则表达式字符:
| RE字符 | 意义和范例 |
| ^word | 查找(word)在行首 |
| word$ | 查找(word)在行尾 |
| . | 代表一定有一个任意的字符 |
| \ | 将特殊符号的特殊意义去除 |
| * | 重复零个到无穷多个的前一个字符 |
| [list] | 从字符集合的RE字符里面找出想要选取的字符 |
| [n1-n2] | 从字符集合的RE字符里面找出想要选取的字符范围.如:grep -n '[0-9]' filename |
| [^list] | 从字符集合的RE字符里面找出不要的字符串范围。 |
| \{n,m\} | 连续n到m个前一个RE字符,若为\{n\}则是连续n个的前一个RE字符,若为\{n,\}则是连续 n个以上的前一个RE字符, 范例:在g与g之间有2到3个o存在的字符串即(goog)(gooog) grep -n 'go\{2,3\}g' filename |
原文:http://www.moozsec.com/post-31.html
grep命令的扩展正则表达式可用egrep表示,也可以用grep -E来表示;
egrep:
支持扩展的正则表达式实现类似于grep文本过滤功能;等同于grep -E;
用法:
egrep [OPTIONS] PATTERN [FILE...]
OPTIONS:
-i:ignorecase,忽略字符的大小写;
-o:仅显示匹配到的字符串本身;
-v, --invert-match:反向显示,显示不能被模式匹配到的行;
-E:支持使用扩展的正则表达式元字符;
-q, --quiet, --silent:静默模式,即不输出任何信息;
-A #:after,显示匹配到的字符串后#行
-B #:before,显示匹配到的字符串前#行
-C #:依次类推;
-G:支持基本正则表达式;
扩展正则表达式的元字符:
字符匹配:
.:匹配任意单个字符;
[]:匹配指定范围内的任意单个字符;
[^]:匹配指定范围外的任意单个字符;
[:digit:]、[:lower:]、[:upper:]、[:alnum:]、[:alpha:]、[:space:]、[:punct:]
次数匹配
*:匹配其前面的字符任意次:0,1,多次;
.*:匹配任意长度的任意字符;
?:匹配其前面的字符0次或1次,即其前面的字符是可有可无的;
+:匹配其前面的字符1此或多次;即其前面的字符要至少出现一次;
{m}:匹配其前面字符m次;
{m,n}:匹配其前面的字符至少m次,至多n次;
{0,n}:至多n次;
{m,}:至少m次;
位置锚定
^:行首锚定;用于模式的最左侧;
$:行尾锚定;用于模式的最右侧;
^PATTERN$:用于PATTERN来匹配整行;
^$:空白行;
^[[:space:]]*$:空行或包含空白字符的行;
单词:非特殊字符组成的连续字符(字符串)都称为单词;
\<或\b:词首锚定,用于单词模式的左侧;
\>或\b:词尾锚定,用于单词模式的右侧;
\<PATTERN\>:匹配完整单词;
分组及引用
():将一个或多个字符捆绑在一起,当作一个整体进行处理;
如:(xy)*ab
Note:分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量为:
后向引用:\1,\2,...
或
a|b:a或者b;
如:C|cat的意思是C或cat
(c|C)at:cat或Cat;
示例:
1、找出/etc/passwd文件中两位数或三位数;
~]# grep -E "\<[[:digit:]]{2,3}\>" /etc/passwd
2、找出/etc/rc.d/rc.sysinit或/etc/grub2.cfg文件中,以至少一个空白字符开头,且后面存在非空白字符的行;
~]# grep -E "^[[:space:]]+[^[:space:]]" /etc/grub2.cfg
3、找出/proc/meminfo文件中,所有以大写或小写S开头的行;至少有两种实现方式;
~]# grep -i "^s" /proc/meminfo
~]# grep -E "(s|S)" /proc/meminfo
~]# grep "^[sS]" /proc/meminfo
4、显示当前系统上root、centos或user1用户的相关信息;
]# grep -E "^(root|centos|user1)\>" /etc/passwd
5、找出/etc/rc.d/init.d/functions文件中某单词后面跟一个小括号的行;
~]# grep -Eo "^[_[:alnum:]]+\(\)" /etc/rc.d/init.d/functions
6、使用echo命令输出一个绝对路径,使用egrep取出其基名;
~]# echo /etc/rc.d/init.d/functions | grep -Eo "[^/]+/?$"
进一步:取出其路径名;类似于对齐执行dirname命令的结果;
~]# echo /etc/rc.d/init.d/functions | grep -Eo "^/.*/"
7、找出ifconfig命令结果中1-255之间的数值;
~]# ifconfig | grep -Eo "\<[1-9]|[1-9][0-9]|1([0-9]{2})|2[0-4][0-9]|25[0-5]\>"
8、找出ifconfig命令结果中的IP地址;
~]# ifconfig | grep -Eo "\<(([0-9]|[1-9][0-9]|1([0-9]){2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1([0-9]){2}|2[0-4][0-9]|25[0-5])"
9、添加用户bash、testbash、basher以及nologin(其shell为/sbin/nologin);而后找出/etc/passwd文件中用户名同shell名的行;
~]# useradd bash
~]# useradd testbash
~]# useradd basher
~]# useradd -s /sbin/nologin nologin
~]# grep -E "^([^:]+\>).*\1$" /etc/passwd
fgrep:不支持正则表达式元字符;
当无需用到元字符去编写模式时,使用fgrep性能更好;代码数量越多使用显示性能效果更为明显;
文本查看及处理工具:wc,cut,sort,uniq,diff,patch
wc:word count
功能:
print newline, word, and byte counts for each file
打印文件的行、字、字节数;
wc [OPTION]... [FILE]...
OPTIONS:
-l:lines 仅打印行
-w:words 仅打印字
-c:bytes 仅打印字节
cut:remove sections from each line of files
删除文件的某一行的某一部分;
cut OPTION... [FILE]...
OPTIONS:
-d CHAR:以指定字符为分隔符;
-f FILES:挑选出的字段;
#:指定的单个字段;
#-#:连续的多个字段;
#,#:离散的多个字段;
sort:sort lines of text files
对文本文件的行进行排序;
sort [OPTION]... [FILE]...
-t CHAR:指定分隔符;
-k #:用于排序指定
-n:基于数值大小而非字符进行排序;
-r:逆序排序;
-f:忽略字符大小写;
-u:重复的行只保留一份;
重复行:连续且相同;
uniq:report or omit repeated lines
报告或移除重复的行;
uniq [OPTION]... [INPUT [OUTPUT]]
-c:显示每行的重复次数
-u:仅显示未曾重复的行;
-d:仅显示重复的行;
diff:compare files line by line
逐行比较两个文件不同之处;
diff [OPTION]... FILES
diff /PATH/TO/OLDFILE /PATH/TO/NEWFILE>/PATH/TO/PATCH_FILE
-u:使用unfied机制,即显示要修改的行的上下文,默认为3行;
patch:向文件打补丁;
patch [OPTIONS] -i /PATH/TO/PATCH_FILE /PATH/TO/OLDFILE
patch /PATH/TO/OLDFILE < /PATH/TO/PATCH_FILE
示例:取出ifconfig eno16777736命令中的ip地址;
~]# ifconfig eno16777736 | head -2 | tail -1 | tr -s " " | cut -d " " -f3
(转)linux正则表达式详解的更多相关文章
- Linux 正则表达式详解
正则表达式(REGULAR):为处理大量的字符串而定义的一套规则和方法,为了处理大量字符串而生 常见命令参数 基础正则表达式 . :有且只有任意一个字符(包括空格) * :重复前面任意0或者多个字符 ...
- [转]Linux 正则表达式详解
转自:http://www.jb51.net/article/42989.htm 一.linux文本查找命令 在说linux正规表达式之前,还介绍下linux中查找文本文件常用的三个命令: 1.gre ...
- Linux文本处理三剑客之grep及正则表达式详解
Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...
- Linux命令详解之—tail命令
tail命令也是一个非常常用的文件查看类的命令,今天就为大家介绍下Linux tail命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux tail命令主要用来从指定点开始将文 ...
- JavaScript正则表达式详解(一)正则表达式入门
JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- Linux命令详解之—less命令
Linux下还有一个与more命令非常类似的命令--less命令,相比于more命令,less命令更加灵活强大一些,今天就给大家介绍下Linux下的less命令. 更多Linux命令详情请看:Linu ...
- Linux命令详解之—more命令
Linux more命令同cat命令一样,多用来查看文件内容,本文就为大家介绍下Linux more命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux的more命令类似 ca ...
- 【转】linux命令详解:md5sum命令
[转]linux命令详解:md5sum命令 转自:http://blog.itpub.net/29320885/viewspace-1710218/ 前言 在网络传输.设备之间转存.复制大文件等时,可 ...
随机推荐
- spark提交模式
spark基本的提交语句: ./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --depl ...
- 杂项:grunt-tmod
ylbtech-杂项:grunt-tmod 前端模板预编译工具 tmodjs 的grunt自动化插件. 1.返回顶部 1. grunt-tmod 前端模板预编译工具 tmodjs 的grunt自动化插 ...
- Python-IO模式介绍
事件驱动模型:有个事件队列,把事件放到队列里,然后循环这个队列,取出事件执行 5种IO模式: 阻塞 I/O(blocking IO) 非阻塞 I/O(nonblocking IO) I/O 多路复用( ...
- Python模块-requests(二)
会话对象 会话对象能够跨请求保持某些参数. 它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能. 所以 ...
- 通过HBase Shell与HBase交互
出处:http://www.taobaotest.com/blogs/1604 业务开发测试HBase之旅二:通过HBase Shell与HBase交互 yedu 发表于:2011-10-11 浏览: ...
- BSGS(大小步)算法
BSGS算法主要用于求解形如ax≡b(mod p)的式子中x的值. 在这里我们不妨设 x=k1*n-k2 这时我们就可以将式子转化为 ak1*n≡b*ak2(mod p) 这里的n我们设为√p,所以我 ...
- Eclipse提交svn错误svn E210003 connection refused by the server
错误明细: org.apache.subversion.javahl.ClientException: svn: E210003: connection refused by the server o ...
- jquery对css操作
1.css取得p的颜色:$(document).ready(function(){ var p= $("p").css("color"); alert(p);} ...
- CSS 框模型概述
在 CSS 中,width 和 height 指的是内容区域的宽度和高度. 增加内边距.边框和外边距不会影响内容区域的尺寸,但是会增加元素框的总尺寸. 假设框的每个边上有 10 个像素的外边距和 5 ...
- 2017-10-7 清北刷题冲刺班a.m
测试 A 消失的数字 文件名 输入文件 输出文件 时间限制 空间限制del.cpp/c/pas del.in del.out 1s 512MB题目描述现在,我的手上有 n 个数字,分别是 a 1 ,a ...