![](https://img.haomeiwen.com/i3113589/371ac37285a081af.png)
说来惭愧,从年初开始看鸟哥的私房菜,当时觉得要学的东西好多呀,好想都学会呀!我要这两个月学这个,下两个月学那个!
结果到现在还没看完一半。
grep用法(后面会通过grep命令来练习正则表达式)
grep [-A] [-B] [--color=auto] '搜寻字串' filename
- -A: 后面可加数字, after的意思,除了列出该行外,后面n行也列出来
- -B: 后面可加数字, befer的意思,....
- -n: 显示行号
- -i: 忽略大小写
- -v: 反向选择,即查找不包含'搜寻字串'的行
- -c: 计算找到的次数
- -a: 将binary文件以text文件的方式查找
- -r: 递归查找(用来查找文件夹下的所有文件)
grep+正则表达式的例子
1.查找字符串
grep -n 'the' regular_express.txt
2.中括号
-
grep -n 't[ae]st' regular_express.txt
可以查到"test"和"tast" -
grep -n '[^g]oo' regular_express.txt
查找oo,但oo前面不能是g -
grep -n '[^abcdefg....z]oo' regular_express.txt
oo前不能是小写字母,但这样写太麻烦了 -
grep -n '[^a-z]oo' regular_express.txt
oo前不能是小写字母,可以这样写 -
grep -n '[a-zA-Z0-9]' regular_express.txt
查找字母数字
3.行首行尾字符^$
-
grep -n '^the' regular_express.txt
查找以the开头的行 -
grep -n '^[a-z]' regular_express.txt
查找以小写字母开头的行 -
grep -n '^[^a-zA-Z]' regular_express.txt
不要以字母开头的 -
grep -n '\.$' regular_express.txt
查找行尾是点的行 -
grep -n '^$' regular_express.txt
查找空白行
4.通配符号
.表示任意1个字符
*表示重复前一个字符至少0次
-
grep -n 'g.*g' regular_express.txt
g开头g结尾 -
grep -n '[0-9][0-9]*' regular_express.txt
找出任意数字
5.连续字符
-
grep -n 'o\{2\}' regular_express.txt
查找oo -
grep -n 'go\{2,5\}' regular_express.txt
查找g后面有2到5个o的行
6.延伸用法
-
grep -E // 这样可以使用延伸的正则表示法
-
+: 重复前一个字符至少1次
-
?: 重复前一个字符0次or1次
-
|: 表示或
-
(): 多个字符括起来表示一组
-
grep -E "g(oo|la)?d" regular_express.txt
查找good/glad/gd
应用
因为我的所有笔记都以纯文本的形式存放在linux系统上,所以下面的命令对于我来说还是挺实用的。
1.查找指定目录下所有文件的内容
grep -nr "xxx" 目录名
2.查找当前目录下文件的个数(不包括子目录)
ls -l | grep "^-" | wc -l
在"ls -l"列出的结果中,文件以"-"开头,"wc -l"用来统计行数
3.查找当前目录下文件的个数(包括子目录)
ls -lR | grep "^-" | wc -l
4.查找当前目录下文件夹的个数(包括子目录)
ls -lR | grep "^d" | wc -l
在"ls -l"列出的结果中,文件夹以"d"开头
网友评论