计算机网络/计算机科学与应用/系统/运维/开发

Linux - 过滤文本命令 grep 与正则表达式

1、过滤文本的命令 grep

grep 命令是linux下的文本过滤工具,grep根据指定的字符串 对文件的每一行进行搜索,如果找到了字符串,就输出该行的内容。


格式:  

grep [选项] 需要查找的字符串  文件名


选项:

-A NUM 除了列出符合条件的行外,同时列出每个符合条件行的后num行
-c 只显示符合条件的行数 而不显示每行的具体信息
-f file 事先将要搜索的样式写入到一个文件中 每行一个样式 然后以这个文件作为条件进行搜索
-i 搜索时忽略大小写
-n 在显示的搜索结果上显示行号
-B 与选项"-A"相反 除了列出符合条件的行外,同时列出每个符合条件行的前NUM行


举例1:列出2.txt文件中含有my字符串的行

[root@localhost tmp]# grep -ni zhao 2.txt  3:zhao tian hao


举例2:列出2.txt文件中含有my字符串的行,忽略大小写,并标识出每行的行号

[root@localhost tmp]# grep -ni my 2.txt 2:my names zhao` 3:my you  i


2、正则表达式

c  匹配字母c

.  匹配任意单个字母

*  匹配前一个字符出现0次或多次

.* 匹配多个任意字符

[] 匹配集合中的任意单个字符 括号可以是任意数量字符的集合

[x-y] 匹配连续的字符串范围

^ 匹配字符串的开头

$ 匹配字符串的结尾

[^] 匹配否定,对括号中的集合取反

\ 匹配转义后的字符串

\{n,m\} 匹配前一个字符重复n到m次

\{n,\} 匹配前一个字符重复至少n次

\{n\} 匹配前一个字符重复n次

\(\) 将\(与\)之间的内容存储在"保留空间" 最多可存储9个

\n 通过\1至\9调用保留空间中的内容


3、扩展正则表达式

{n,m} 等同于基本正则表达式\{n,m\}

+ 匹配前的字符出现一次或多次

? 匹配前的字符出现0次或1次

| 匹配逻辑或 即匹配|前或后的字串

() 匹配正则集合 同时也有保留的意思,等同于基本正则表达式的\(\)


grep,过滤文本

人生活在得失之间,得亦是失,失亦是得。

评论

^