一、grep命令
grep(Global Regular Expressions Print)意为全局正则表达式打印。
grep是一个逐行扫描指定文件或文件的程序,返回包含模式的行。模式是一种表达式,它通过将字符解释为元字符来指定一组字符串。这使用户能够在grep命令中键入一系列短字符和元字符,以使计算机向我们显示哪些文件匹配的行。
grep的使用格式:grep <选项> '查找项目' <指定文件>
通过过滤 ‘关键词’ 查找指定对象
grep的选项:
-i 忽略大小写
-c 只输出匹配行的数量
-l 只列出符合匹配的文件名,不列出具体的匹配行
-n 列出所有的匹配行,显示行号
-h 查询多文件时不显示文件名
-s 不显示不存在、没有匹配文本的错误信息
-v 取反显示包含匹配文本的所有行
-w 匹配整词-x匹配整行-r递归搜索
-q 禁止输出任何结果,已退出状态表示搜索是否成功
-b 打印匹配行距文件头部的偏移量,以字节为单位
-o 与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位
-F 匹配固定字符串的内容
-E 支持扩展的正则表达式
grep命令可以在 ‘关键字’ 中使用 ’^##' 表示以##开头,‘##$' 表示以##结尾,‘ . ’表示单个字符
' ^$ ' 叠加选项 v 使用可以反向输出所有非空格内容
[root@ljp /]# grep '^a' test #查找以a开头
abcdefg
[root@ljp /]# grep 'n$' test
i 'going to destory the Unit states and the Japan #查找以n结尾
hijklmn
[root@ljp /]# grep -i '.oing' test
i 'going to destory the Unit states and the Japan #查找单个字符开头oing结尾
[root@ljp /]# grep -v '^$' test #反向输出所有非空格内容(过滤空行)
I 'm a chinese boy
i 'going to destory the Unit states and the Japan
1,2,3,1,2,3,1,2,3
/.
*?
++
ak+
abcdefg
hijklmn
opqrstu
vwxvz
需要注意的是,grep命令过滤的关键词中无法使用find命令中的通配符 “ * ” “ ? " 来表示若干个字符和一个字符,其只能作为被过滤的关键词,即:
[root@ljp /]# grep '?' /test #这里grep中find的通配符只能表示查找字符‘?’
*?
二、fgrep命令
fgrep(Fixed-string Global Regular Expressions Print)意为固定字符串全局正则表达式打印fgrep(与grep -F相同)是固定的或快速的grep,其行为与grep相同,但不会将任何正则表达式元字符识别为特殊的。搜索将更快完成,因为它只处理简单的字符串而不是复杂的模式。
所以grep的的问题在这里得到了解决,使用fgrep命令可以查找单个字符串,例如上一部分的查找 '.' ,grep命令将 '.' 表示为单个字符,如果我们要查找这样的单个字符串,可以使用fgrep
例:
[root@ljp /]# grep -i '.oing' test
i 'going to destory the Unit states and the Japan
三、pgrep命令
pgrep(Process-ID Global Regular Expressions Print)意为查看当前正在运行的进程,并将与选择条件匹配的进程ID列出
当你想要某个进程的PID时,可以使用pgrep。例如,如果我只想知道我的bash进程的进程ID,使用pgrep bash
将返回进程ID 值
[root@ljp /]# pgrep bash
7631
8202
8264
pgrep的相关选项与功能
-l 可同时输出对应的进程名以及id
-U 查询特定用户的进程
-t 查询在特定终端运行的进程
-o 进程起始的ID;
-n 进程终止的ID;