grep命令
1、作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
2、格式
grep [options]
3、主要参数( 如果忘记可参考 man grep)
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
4、示例
- 4.1在passwd文件中查找出root和imix字符串的在第几行(passwd是系统文件,专门存放用户的相关信息
grep –n “root\|imix” /etc/passwd
- 4.2承接4.1,查询出满足条件的前4行和后3行的信息
grep –n –B 4 –A 3 “imix” /etc/passed
- 4.3輸入 df 后,將 tmpfs 相关的那几行取消(df是用来检查linux服务器的文件系统的磁盘空间占用情况)
df |grep -v tmpfs
5、正则
字符 | 意义及示例 |
^word | 意义:查询字符串(word)在行首 示例:查询行首为#开始的哪一行,并列出行号 grep -n '^#' express.txt |
word$ | 意义:查询字符串(word)在行尾 示例:将行尾为!的哪一行列举出来,并且显示出行号 grep -n '!$' express.txt |
. | 意义:匹配任何单个字符 示例:查询字符串以eve、eae、eee、 e e但不能有(ee ) grep -n 'e.e' express.txt |
\ | 意义:转义字符,将特殊符号的特殊意义去掉 示例:查询还有单引号 ' 的哪一行 grep -n \' express.txt |
* | 意义:匹配前一个字符≥0次 示例:查询出 (es) (ess) (esss) 等等的字串所在的行 grep -n 'ess*' |
[list] | 意义:查询[]中列出指定的字符 示例:查询 aay,afy,aly grep -n 'a[afl]y' express.txt |
[n1-n2] | 意义:查询出指定的字符 示例: 查询出以大写字母开头的行 grep -n '^[A-Z]' express.txt |
[^list] | 意义:查询出不是list集合行(注: 那個^在[]内时,代表的意义是反向选择) 示例:查询出字符串oog,ood但不能是oot grep -n 'oo[^t]' express.txt |
\{n,m\} | 意义: \{n,m\}查询出某个字符连续出现n到m次 \{n,\}查询出某个字符连续出现n次以上 \{n\}查询出某个字符连续出现n次 示例:查询出在g与g之间有2个到3个o存在的行 grep -n 'go\{2,3\}g' express.txt |