前天晚上看了一点书,昨天看完了,下午练习命令,终于见到传说中的Linux三剑客了grep,sed,awk
grep是对行的处理命令,在鸟哥书中提供了文件来练习,废话不多说,直接上练习题
-n选项,输出的同时输出行号
-v选项,反向选择,就是除选项后面的字符外输出
- 搜索特定字符串the,由于grep是对行的处理,所以在搜索出来的结果是一行行显示的:
grep 'the' 文件名
- 利用中括号来搜索集合字符
在搜索集合字符时一定要加上中括号,要不然就是搜索特定的字符串例如查找含有0到9数字的行,如果使用’0-9’就会出错,因为这是一个字符串0-9.
(1). 如果我想要搜索test或者taste这两个单词时候,发现他们有共同的‘t?st’构成,
可以这样来搜索
grep 't[as]t' 文件名,或者grep 't.st' 文件名
后者的点表示t和st之间一定有一个字符存在,当然也有一个问题,就是可能存在tab
(2)想要搜索含有’oo’字样的字符串,但是前面不想要g这个字符
grep '[^g]oo' 文件名,其中[^]是集合字符里面的反选字符
但是这样输出也会有问题,例如会出现含有goooole字符串的行或者出现同时含有goole和too字符串的行
(3)假设在oo前面不想要小写字符
一种是:grep '[^a-z]oo' 文件名;另一种是:grep '[^[:lower:]]oo' 文件名
一些特殊符号需要记住
[:alnum:]:代表英文大小写字符及数字
[:alpha:]:代表任何英文大小写字符
[:upper:]:代表英文大写字符
[:lower:]:代表英文小写字符
[:digit:]:代表数字
3.行首和行尾字符^ $
(1)如果想让the只在行首列出
grep '^the' 文件名,如果忽略大小写的话,前面可以加上-i选项
在这里要注意^的位置关系,
在中括号内的^表示反向选择,即不是
在中括号外的^表示开头是以,,,(^后面所接