文本搜索必学命令-grep egrep fgrep用法以及正则表达式
时间:2014-11-05 01:33 来源:linux.it.net.cn 作者:IT
一 grep egrep fgrep命令
本文中主要介绍了linux系统下grep egrep fgrep命令和正则表达式的基本参数和使用格式 方法 (注释 文中fg代表例子 )
基本定义
grep(global search regular RE ) and print out the line 全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具 它只能使用基本的正则表达式来搜索文本 并把匹配的行打印出来
grep是很常见也很常用的命令 它的主要功能是进行字符串数据的比较 然后符合用户需求的字符串打印出来 但是主意 grep在数据中查找一个字符串时 是以 整行 为单位进行数据筛选的
egrep命令等同于grep E 利用此命令可以使用扩展的正则表达式对文本进行搜索 并把符合用户需求的字符串打印出来
fgrep命令等同于grep F 它利用固定的字符串来对文本进行搜索 但不支持正则表达式的引用 所以此命令的执行速度也最快
命令基本用法
grep [option] &# ;搜索字符串&# ; filename
grep常用选项
a :在二进制文件中 以文本文件的方式搜索数据
fg:在/etc/inittab内搜索包含rc字符串的行
grep a &# ;rc&# ; /etc/inittab
c :计算找到&# ;搜索字符串&# ;的次数
i :忽略大小写
v :反向查找 即显示没有&# ;搜索字符串&# ;内容的那行
o :只显示被模式匹配的字符串
n :输出行号
colour(color):颜色显示
A 显示匹配到字符那行的后面n行
B 显示匹配到字符那行的前面n行
C 显示匹配到字符那行的前后n行
二 正则表达式
基本定义
正则表达使用单个字符串来描述 匹配一系列符合某个句法规则的字符串 在很多文本编辑器里 正则表达式通常被用来检索 替换那些符合某个模式的文本 简而言之 正则表达式就是处理字符串的方法 以行为单位进行字符串的处理 通过一些特殊符号的辅助 可以让用户轻松搜索/替换某特定的字符串
正则表达式分为两类 基本的正则表达式和扩展的正则表达式
正则表达式详细介绍
基本的正则表达式
( )元字符
:匹配任意单个字符
fg 查找包含student且student后面带一个字符的行
grep student /etc/passwd //模式可以用单引号和双引号 如果模式中要做变量替换时则
必须用双引
[]:匹配指定范围内的任意单个字符 [abc] [a z] [ ] [a zA Z]
fg 查找带有数字的行
grep [ ] /etc/passwd
[^]:匹配指定范围外的任意单个字符
fg 查找没有小写字母的行
grep [^a z] /etc/inittab
[:space:]:表示空白字符
[:punct:]:表示所有标点符号的集合
[:lower:]:表示所有的小写字母
[:upper:]:表示所有的大写字母
[:alpha:]:表示大小写字母
[:digit:]:表示数子
[:alnum:]:表示数字和大小写字母 使用格式[[:alnum:]]等
( )次数匹配
* :匹配其前面的字符任意次
fg 查找root出现 次或 次以上的行
grep root* /etc/passwd
* :任意字符
fg 查找包含root的行
grep &# ;root *&# ; /etc/passwd
? 匹配其前面的字符 次或 次
{m n} :匹配其前字符最少m 最多n次)
( ) 字符锚定
^:锚定行首 此字符后面的任意内容必须出现在行首
fg 查找行首以#开头的行
grep &# ;^#&# ; /etc/inittab
$:锚定行尾 此字符前面的任意内容必须出现在行尾
fg 查找行首以root结尾的行
grep &# ;root$&# ; /etc/inittab
^$:锚定空白行 可以统计空白行
<或者b:锚定词首 其后面的任意字符必须做为单词首部出现
fg:查找root且root前面不包含任何字符的行
grep &# ;<root&# ; /etc/nfig
>或者b:锚定词尾 其前面的任意字符必须做为单词尾部出现
fg <root> 查找root单词 grep "<root>" =grep "brootb"
扩展的正则表达式
扩展的正则表达只是在基本的正则表达上作出了小小的一点修改 其修改如下
在扩展的正则表达中把( ) 写成() { } 写成{ } 另外加入了+ 次数匹配 匹配其前面的字符至少出现一次 无上限 |: 或者(二取一) 其余的都一样 基本正则表达式 使用( ) { } ? |都需要转义 在扩展正则表达中不需要加 其详细信息如下
( ) 字符匹配的命令和用法与基本正则表达式的用法相同 这里不再重复阐述
( ) 次数匹配
* :匹配其前面字符的任意次
?:匹配其前面字符的 此或着 此
+ :匹配其前面字符至少 此
fg 至少一个空白符 &# ;[[:space:]]+&# ;
{m n} :匹配其前面字符m到n次
( ) 字符锚定的用法和基本正则表达式的用法相同 在此不再阐述
( )特殊字符
| : 代表或者的意思
fg grep E &# ;c|cat&# ; file 表示在文件file内查找包含c或者cat
:表示转义字符 此表示符号
三 grep命令利用小实例
( )显示/etc/inittab 中以#开头 且后面跟一个或者多个空白符 而后又跟了任意非空白符的行
grep &# ;#[[:space:]]*[^[:space:]]&# ; /etc/inittab
( ) 输出不是数字开头的行
grep &# ;^[ ] /etc/passwd
( )输出行首是 或
grep &# ;^( | )&# ; /etc/inittab或grep E &# ;^( | )&# ; /etc/inittab
( )查找前面是rc中间接任意字符而后跟/rc
grep &# ; *(rc) */ *&# ; /etc/inittab
( )取出当前电脑上的IP
ifconfig |grep A "^eth " |grep "<[ ]{ } |cut d: f
( )查找当前系统上名字为student(必须出现在行首)的用户账户的相关信息 文件为/etc/passwd
grep "^student" /etc/passwd
( )显示/proc/meminfo文件中以不区分大小写的s开头的行
grep i &# ;^s&# ; /proc/meminfo或者 grep &# ;^[sS]&# ; meminfo
( ) 显示/etc/inittab 中以#开头 且后面跟一个或者多个空白符 而后又跟了任意非空白符的行
grep &# ;^#[[:space:]]*[^[:space:]]&# ; /etc/inittab
( ) 显示/boot/grub/nf文件中以一个或者多个空白符开头的行
grep &# ;^[[:space:]]{ }&# ; /boot/grub/nf
( )显示/etc/inittab文件中以一个数字开头并以一个与开头数字相同的数字结尾的行
grep &# ;^([ ]) * $&# ; /etc/inittab 或者 grep &# ;^([[:digit:]]) * $&# ; /etc/inittab
( )找出ifconfig命令结果中的 之间的整数
ifconfig | egrep &# ;b[ ][ ]b?|b [ ][ ]b|b [ ][ ]b|b [ ]b&# ; color
(责任编辑:IT)
一
本文中主要介绍了linux系统下grep egrep fgrep命令和正则表达式的基本参数和使用格式
grep(global search regular RE ) and print out the line
grep是很常见也很常用的命令
egrep命令等同于grep
fgrep命令等同于grep
grep [option] &#
grep常用选项
二
正则表达使用单个字符串来描述
正则表达式分为两类
(
(
* :匹配其前面的字符任意次
(
^:锚定行首
扩展的正则表达只是在基本的正则表达上作出了小小的一点修改
在扩展的正则表达中把( ) 写成()
(
(
* :匹配其前面字符的任意次
(
(
| : 代表或者的意思
三
( |