《Unix Shell 实例精解》学习笔记 By turner
书中有误。
6) grep '^[we]' datafile
打印 datafile 中以 w 或者 e 开头的行
7) grep 'ss* ' datafile
northwest NW Charles Main 3.0 .98 3 34
southwest SW Lewis Dalsass 2.7 .8 2 18
解释:打印所有包含一个 s 并跟 0 个或者多个 s,然后跟一个空格的行
6.用管道的 grep
grep 可以从管道得到输入。
% ls –l
drwxr-xr-x 6 oracle dba 512 4 月 3 21:49 chap10
drwxr-xr-x 2 oracle dba 512 4 月 10 22:23 exam
-rwxr--r-- 1 oracle dba 1842 4 月 3 21:51 readme.txt
-rwxr--r-- 1 oracle dba 1801 4 月 3 21:51 unix_readme.txt
% ls –l | grep '^d'
drwxr-xr-x 6 oracle dba 512 4 月 3 21:49 chap10
drwxr-xr-x 2 oracle dba 512 4 月 10 22:23 exam
% ls -l |grep '^[^d]'
-rwxr--r-- 1 oracle dba 1842 4 月 3 21:51 readme.txt
-rwxr--r-- 1 oracle dba 1801 4 月 3 21:51 unix_readme.txt
7.带选项的 grep 举例:
grep –c ‘west’ datafile
3
解释计算 datafile 中含有 west 的总数。
8.egrep (扩展的 grep)
egrep 可以使用额外的正则表达式,如下表。
元字符 功能 例子 解释
+
匹配一个或多个前驱字符 '[a-z]+ove' 匹配一个或多个小写
字母,后跟 ove
?
匹配 0 个或者 1 个前驱字
符
'lo?ve' 将找到 love 或 love
a|b 匹配 a 或者 b 'love|hate' 与 love 或 hate 匹配
()
组字符 'lov(ely|able) 与 lovely 或 lovable
匹配
表 3.2
9.egrep 举例:
egrep '2\.?[0-9]' datafile
解释:打印所有这样的行:它包含一个 2,后跟 0 个或者一个句号,然后跟
一个数字。
10. fgrep
fgrep 把所有的元字符都当作字符本身,只代表自己。
11. UNIX 工具试验参考答案(内容参考 datebook)
打印包含 San 的行
grep 'San' datebook
6