Linux 系统中提供了大量的命令,从文件目录管理,用户管理,到系统监控等等,功能非常丰富,但有几个是常用且重要的命令。
1. 命令 grep
作用:
grep, egrep, fgrep - print lines matching a pattern,grep用来过滤字符串信息。
格式:
grep [options] 'pattern' filename
常用选项(参数)
不区分大小写:
grep用来过滤字符串信息,grep默认对字母大小写敏感,不过可以通过选项对grep屏蔽大小写敏感,该选项为 -i。
$ grep –i "abc"
# 结果为abc,ABC, abcde, Abcd 等
模糊匹配:
$ grep "abc"
# 结果为abcd, abcde, abc 等
全匹配:
grep -w abc 会打印出包含 abc 词的行,abc 词后面如果还有字母、数字和下划线,则不会被匹配,其他的则都能匹配到。
$ grep -w "abc"
# 结果为abc,abc++ 等
递归查询:
grep -R, -r,--recursive,递归读取每个目录下的所有文件,效果和指定"-d recurse"参数相同。
显示行号:
-n 在显示符合范本样式的那一列之前,标示出该列的行编号。
$ grep -n aa test1.txt
1:aaaaabbbbb
2:Adamaa
5:123aa45
使用范本:
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让 grep 查找符合范本条件的文件内容,格式为每一列的范本样式。
$ cat test1.txt |grep -nf test3.txt
1:aaaaabbbbb
2:Adamaa
5:123aa45
标记匹配颜色:
--color=auto 或直接 --color,可将参数放在中间,也可放到最后。
$ grep --color=auto aa test1.txt
或者
$ grep --color aa test1.txt
统计匹配的行数:
使用 grep -c 或者 grep | wc -l,作用类似,不同的是,如果是查找多个文件,grep -c 会统计每个文件匹配的行数,每行一个文件的列出来,而 wc -l 则列出总的统计数字。另外 grep -c 要比 grep | wc -l 快一点。
$ grep aa *.txt -c
test1.txt:3
test2.txt:2
test3.txt:1
test4.txt:0
$ grep aa *.txt | wc -l
6
匹配不符合条件的行,即取反, -v, --invert-match
[root@ryan linux]# grep -n "jiang" test2
4:adam:30:xinjiang:123123:python
7:ada:16:shengjiang:123321:rubby
[root@ryan linux]# grep -nv "jiang" test2
1:bob:26:shanxi:138912:linux
2:
3:ryan:28:china:23124:java
5:
6:emily:20:beijing:35345:scala
8:jim.green:18:shandong:123321:rubby
9:tom:16:hebei:123321:ru.bby
10:http://www.baidu.com/musicdocument,mp3
还有一些参数,如下:
-A:后面跟一个数字(有无空格都可以),例如 -A2 表示打印符合要求的行以及下面两行;--After
-B:后面跟一个数字(有无空格都可以),例如 -B2 表示打印符合要求的行以及上面两行;--Before
-C:后面跟一个数字(有无空格都可以),例如 -C2 表示打印符合要求的行以及上下各两行;--Context