- 浏览: 2538542 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
http://bbs.chinaunix.net/thread-446683-1-1.html
比方以 grep 来说, 在 Linux 上你可找到 grep, egrep, fgrep 这几个程序, 其差异大致如下:
* grep:
传统的 grep 程序, 在没有参数的情况下, 只输出符合 RE 字符串之句子. 常见参数如下:
-v: 逆反模示, 只输出"不含" RE 字符串之句子.
-r: 递归模式, 可同时处理所有层级子目录里的文件.
-q: 静默模式, 不输出任何结果(stderr 除外. 常用以获取 return value, 符合为 true, 否则为 false .)
-i: 忽略大小写.
-w: 整词比对, 类似 \<word\> .
-n: 同时输出行号.
-c: 只输出符合比对的行数.
-l: 只输出符合比对的文件名称.
-o: 只输出符合 RE 的字符串. (gnu 新版独有, 不见得所有版本都支持.)
-E: 切换为 egrep .
* egrep:
为 grep 的扩充版本, 改良了许多传统 grep 不能或不便的操作. 比方说:
- grep 之下不支持 ? 与 + 这两种 modifier, 但 egrep 则可.
- grep 不支持 a|b 或 (abc|xyz) 这类"或一"比对, 但 egrep 则可.
- grep 在处理 {n,m} 时, 需用 \{ 与 \} 处理, 但 egrep 则不需.
诸如此类的... 我个人会建议能用 egrep 就不用 grep 啦... ^_^
* fgrep:
不作 RE 处理, 表达式仅作一般字符串处理, 所有 meta 均失去功能.
[ade]表示a,d或e
[^]表示除[]内的字符之外的字符
-----------------------实例
在递归目录文件中查找字符串
grep -r "test" ./
从/etc/vsftpd/vsftpd.conf 里面 筛选 yes/YES 的行 出来,怎么筛选
grep -i 'yes' /etc/vsftpd/vsftpd.conf
grep "chin" 1.txt
查找字符 chin 的行内容(多行)
$grep -n "chin" 1.txt 显示行号
3: 2 chin 102 20040129
5:4 chin 444
grep -c "chin" 1.txt 共出现几行
grep -v "chin" 1.txt 显示所有不包含4 8的各行
在上一例中,抽取字符串“ 4 8”,返回结果包含诸如4 8 4和4 8 3等包含“4 8”的其他字符串,实际上应精确抽取只包含4 8的各行。
使用g r e p抽取精确匹配的一种更有效方式是在抽取字符串后加\ >。假定现在精确抽取4 8,方法如下:
$grep "48\>" data.f
<Tab>表示点击t a b键。
$grep "48<tab>" data.f
grep是大小写敏感的,如要查询大小写不敏感字符串,必须使用- i开关
。
模式范围 grep和正则表达式
$grep "48[34]" data.f
483 Sept 5AP1996 USP 65.00 LVX2C 189
484 nov 7PL1996 CAD 49.00 PLV2C 234
483 may 5PA1998 USP 37.00 KVM9D 644
使行首不是4或8,可以在方括号中使用^记号。
$ grep "^[^48]" data.f
如果是字符串48
$ grep -v "^[^48]" data.f
也可以用另一种方式[ ]模式抽取各行包含S e p t和s e p t的所有信息。
$ grep '[sS]ept' data.f
如果要抽取包含S e p t的所有月份,不管其大小写,并且此行包含字符串483,可以使用管道命令,即符号“|”左边命令的输出作为“ |”右边命令的输入。举例如下:
$ grep '[sS]ept' data.f | grep 48
如果抽取以K开头,以D结尾的所有代码,可使用下述方法,因为已知代码长度为5个字符:
grep 'K...D' data.f
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
483 may 5PA1998 USP 37.00 KVM9D 644
将上述代码做轻微改变,头两个是大写字母,中间两个任意,并以C结尾:
$ grep '[A-Z]..C' data.f
483 Sept 5AP1996 USP 65.00 LVX2C 189
219 dec 2CC1999 CAD 23.00 PLV2C 68
484 nov 7PL1996 CAD 49.00 PLV2C 234
一个常用的查询模式是日期查询。先查询所有以5开始以1 9 9 6或1 9 9 8结尾的所有记录。使用模式5 . . 1 9 9 [ 6 , 8 ]。这意味着第一个字符为5,后跟两个点,接着是1 9 9,剩余两个数字是6或8。
$ grep '5..199[6,8]' data.f
483 Sept 5AP1996 USP 65.00 LVX2C 189
483 may 5PA1998 USP 37.00 KVM9D 644
必须学会使用[ ]抽取信息。假定要取得城市代码,第一个字符为0-9,第二个字符在0到5之间,第三个字符在0到6之间,使用下列模式即可实现。
$ grep '[0-9][0-5[0-6]' data.f
抽取包含数字4至少重复出现两次的所有行,方法如下:
$ grep '4\{2,\}' data.f
483 may 5PA1998 USP 37.00 KVM9D 644
抽取记录使之包含数字9 9 9(三个9),方法如下:
$ grep '9\{3,\}' data.f
$ grep '8\{2,6\}3' myfile
888883
88883
使用grep匹配“与”或者“或”模式
g r e p命令加- E参数,这一扩展允许使用扩展模式匹配。例如,要抽取城市代码为2 1 9或2 1 6,方法如下:
$ grep -E '219|216' data.f
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
空行
结合使用^和$可查询空行。使用- c参数显示总行数:
$ grep -c '^$' myfile
使用- n参数显示实际在哪一行:
$ grep -c '^$' myfile
查询有特殊含义的字符,诸如$ . ' " * [] ^ | \ + ? ,必须在特定字符前加\。假设要查询包含“.”的所有行,脚本如下:
$ grep '\.' myfile
使用正则表达式可匹配任意文件名。系统中对文本文件有其标准的命名格式。一般最多六个小写字符,后跟句点,接着是两个大写字符。
$ grep '^[a-z]\{1,6\}\.[A-Z]\{1,2\}' filename
--------------------------------------
$ cat /etc/passwd | grep guru
正确的方法应该是:
$ grep guru /etc/passwd
------------------------g r e p允许使用国际字符模式匹配或匹配模式的类名形式。
类名及其等价的正则表达式类等价的正则表达式类等价的正则表达式
[ [ : u p p e r : ] ] ==> [ A - Z ]
[ [ : a l n u m : ] ] ==> [ 0 - 9 a - zA-Z]
[ [ : l o w e r : ] ] ==> [ a - z ]
[ [ : s p a c e : ] ] ==> 空格或t a b键
[ [ : d i g i t : ] ] ==> [ 0 - 9 ]
[ [ : a l p h a : ] ] ==> [ a - z A - Z ]
取以5开头,后跟至少两个大写字母:
$grep '5[[:upper:]][[:upper]]' data.f
取以P或D结尾的所有产品代码:
grep '[[:upper:]][[:upper:]][P,D]' data.f
使用通配符*的匹配模式
grep "l.*s" testfile
如在行尾查询某一单词,试如下模式:
grep "ng$" testfile 这将在所有文件中查询行尾包含单词ng的所有行
使用g r e p命令- s开关,可屏蔽错误信息。
如果g r e p命令不支持- s开关,可替代使用以下命令:
# grep "sam" /tec/password >/dev/null 2>&1
脚本含义是匹配命令输出或错误( 2 > $ 1),并将结果输出到系统池。大多数系统管理员称/ d e v / n u l l为比特池,没关系,可以将之看成一个无底洞,有进没有出,永远也不会填满。
如要保存g r e p命令的查询结果,可将命令输出重定向到一个文件。
# grep "sam" /etc/passwd >/usr/sam/passwd.out
# cat /usr/sam/passwd.out
sam:x:506:4::/usr/sam:/bin/bash
g r e p不只应用于文件,也可应用于字符串。为此使用e c h o字符串命令,然后对g r e p命令使用管道输入。
# STR="Mary Joe Peter Pauline"
# echo $STR | grep "Mary"
--------------------egrep代表e x p r e s s i o n或extended grep,适情况而定。
e g r e p接受所有的正则表达式, e g r e p的一个显著特性是可以以一个文件作为保存的字符串,然后将之传给e g r e p作为参数,为此使用- f开关。
创建一个名为g r e p s t r i n g s的文件,并输入4 8 4和4 7:
# vi grepstrings
# cat grepstrings
484
47
egrep -f grepstrings data.f
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
484 nov 7PL1996 CAD 49.00 PLV2C 234
如果要查询存储代码3 2 L或2 C C,可以使用(|)符号,意即“|”符号两边之一或全部。
$egrep '(3ZL|2CC)' data.f
47 Oct 3ZL1998 LPSX 43.00 KVM9D 512
219 dec 2CC1999 CAD 23.00 PLV2C 68
216 sept 3ZL1998 USP 86.00 KVM9E 234
可以使用任意多竖线符“ |”,例如要查看在系统中是否有帐号l o u i s e、m a t t y或pauline ,使用w h o命令并管道输出至e g r e p。
$who |egrep (louise|matty|pauline)
还可以使用^符号排除字符串。如果要查看系统上的用户,但不包括m a t t y和p a u l i n e,方法如下:
$who |egrep -v '^(matty|pauline)'
如果要查询一个文件列表,包括s h u t d o w n、s h u t d o w n s、r e b o o t和r e b o o t s,使用e g r e p可容易地实现。
$egrep '(shutdown |reboot) (s)?' *
发表评论
-
Linux运维常用命令 (转载)
2013-01-31 10:23 25241 删除0字节文件find-type f - ... -
[汇总]shell笔试
2013-01-24 17:32 3363http://president.blog.51cto.co ... -
【汇总】shell show收藏
2012-11-29 14:03 1268================== shell从文本取对应的 ... -
Shell中脚本变量和函数变量的作用域
2012-11-28 16:21 1375在shell中定义函 ... -
你可能不知道的Shell
2012-11-26 13:41 1008!$ !$是一个特殊的环境变量,它代表了上一个命令的 ... -
read case
2012-11-01 16:55 965read -p "请输入安装程序编号:" ... -
很精彩的linux命令
2012-07-13 10:55 13681.按内存从大到小排列进程: ps -eo " ... -
[转]实用基础_shell脚本详解命令
2012-07-11 11:44 1471shell脚本编写技巧 " 1.test测试命令 tes ... -
UNIX高手的20个习惯
2012-06-29 12:02 14231. 在单个命令中创建目 ... -
【书】linux shell 脚本攻略
2012-06-27 17:39 1917转载:http://jackyrong.iteye.com/b ... -
字段分隔符IFS和循环
2012-06-27 16:10 1744Shell的内部域分隔符可以是空格、制表符和换行符。它可以作为 ... -
【汇总】sh语法汇总2
2012-06-27 16:08 3407============= " ... -
df,du,fdisk
2012-06-27 12:39 1282------------------- ... -
split,csplit切割文件
2012-06-26 18:06 1599linux split 命令 功能说明:切割文件。 ... -
head,tail
2012-06-26 13:44 3head,tail -
xargs格式化输出
2012-06-26 13:41 1980从标准输出建立并运行命令行 把从stdin接收到 ... -
read,cat,touch,head,tail
2012-06-26 13:39 1552===================== read ... -
sed简化命令:tr
2012-06-26 13:12 1294连续多个’\n‘字符压缩成单个'\n' cat t.txt ... -
cut用法
2012-06-13 17:12 1149linux之cut用法 cut是一个选取命令,就是将一段数据 ... -
用diff比较目录文件差异和patch备份源代码
2012-06-12 17:11 8867=============??????? 新增加的文件无 ...
相关推荐
egrep命令的语法与grep基本相同,但默认就支持了更多的正则表达式特性。 例如,要查找所有包含数字的行,可以使用: ```bash grep '[0-9]' /etc/inittab ``` 同样,要过滤出所有不包含数字的行,可以使用: ```...
#### grep与egrep - **grep**:默认使用BREs,通过`-E`选项使用EREs,通过`-P`选项使用PREs。 - **egrep**:默认使用EREs,通过`-P`选项使用PREs。 - **特点**: - 处理对象:文本文件。 - 处理过程:查找文本...
Unix的grep家族包括grep、egrep和fgrep。Windows系统下类似命令FINDSTR。 grep egrep fgrep(不支持正则表达式) grep需要标准输入 因此常常位于管道右侧 命令参数: –color=auto: 对匹配到的文本着色显示 -v: 显示不...
1. **grep与egrep文本工具** - **grep** 支持BREs、EREs和PREs,具体使用哪种正则表达式取决于命令行参数。 - 不带参数,默认使用BREs。 - 使用`-E`参数时,使用EREs。 - 使用`-P`参数时,使用PREs。 - **egrep...
grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。Unix的grep家族包括grep、egrep和fgrep
在 Unix 系统中,grep 有三个变体:grep、egrep 和 fgrep。egrep 是 grep 的扩展,支持更多的正则表达式元字符;fgrep 即 fixed grep,它不解析正则表达式,而是将搜索模式视为固定字符串。 在 Linux 中,通常使用...
Grep的家族包括三种不同的工具:grep、egrep和fgrep。其中,egrep是grep的增强版,支持更多的正则表达式元字符;而fgrep则是一种快速的grep,它将所有字符视为普通字符,不考虑正则表达式的特殊含义。 在Linux环境...
`egrep`是`grep`的一个扩展版本,主要用于文本搜索,它支持正则表达式进行模式匹配,这使得它在处理复杂的文本匹配任务时更加灵活和强大。本文将对`egrep`中的元字符进行详细总结,并通过具体的例子帮助理解这些元...
`grep`是一个强大的文本搜索工具,在Unix和类Unix操作系统中广泛使用,用于查找与指定模式匹配的行。 ### `grep`简介 `grep`来源于“Global Regular Expression Print”的缩写,最初由Ken Thompson在1973年为UNIX...
通常grep有三种版本grep、egrep(等同于grep -E)和fgrep。egrep为扩展的grep,fgrep则为快速grep(固定的字符串来对文本进行搜索,不支持正则表达式的引用但是查询极为快速)。grep是Linux文本处理三剑客之一。 ...
`egrep`是用于在文本文件中搜索指定模式的工具,基于正则表达式,它是`grep`命令的一个增强版本。 首先,让我们了解C++,这是一种通用的、面向对象的编程语言,具有高效性、灵活性和广泛的库支持。在本项目中,C++...
- 可以结合 egrep(grep -E)使用扩展正则表达式,或使用 fgrep(grep -F)来进行文本匹配,不解释正则表达式。 7. 与管道结合使用: - grep 命令经常与其他命令一起使用,如 ps 命令配合 grep 搜索特定进程,cat...
- **-y**:忽略大小写差异,与 `-i` 类似,但只应用于 `-w` 模式。 #### 六、示例说明 1. **基本用法** ```bash grep "pattern" file.txt ``` 在 `file.txt` 文件中搜索包含 "pattern" 的行。 2. **忽略大...
在Unix系统中,grep家族还包括了egrep和fgrep两个变体,egrep提供了对更多正则表达式元字符的支持,而fgrep则是将所有字符视为固定字符串,不考虑元字符的特殊含义。 在Linux中,通常使用的是GNU版本的grep,它拥有...
2. **Egrep**:扩展`grep`,支持更广泛的正则表达式特性,包括扩展正则表达式(ERE)。 3. **Fgrep**:快速`grep`,用于精确字符串匹配,而不是模式匹配。 #### 三、命令格式 `grep`的一般格式为: ``` grep [选项] ...
在egrep和grep-E中,还有一些额外的元字符可供使用,如: - `+`:匹配一个或多个先前的字符。 - `?`:匹配零个或多个先前的字符。 - `|`:表示选择,即匹配左侧或右侧的表达式。 - `{m}`、`{m,}`、`{m,n}`:分别...
在 Linux 系统中,默认安装的是 GNU 版本的 Grep,该版本提供了丰富的功能,并允许用户通过命令行选项 `-G`、`-E` 和 `-F` 来分别使用 fGrep、eGrep 和标准 Grep 的功能。Grep 在执行时不会对原文件内容造成任何改变...
grep 命令是 Linux 系统中一个强大的命令行工具,它允许在一个或多个文件中搜索与正则表达式匹配的行,并将匹配的结果写入标准输出。grep 命令支持三种正则表达式语法:Basic、Extended 和 Perl 正则表达式。当没有...