Linux命令-grep

Unix的grep家族包括grep、egrep和fgrep。egrep和fgrep的命令只跟grep有很小不同,egrep是grep的扩展,支持更多的re元字符, fgrep就是fixed grep或fast grep,它们把所有的字母都看作单词,也就是说,正则表达式中的元字符表示回其自身的字面意义,不再特殊。linux使用GNU版本的grep。它功能更强,可以通过-G、-E、-F命令行选项来使用egrep和fgrep的功能

grep可以搜索指定文件的内容,并把匹配的行打印出来,搜索中能够使用正则表达式精确搜索

使用格式如下:

Linux命令-grep

更全的参数选择:(参考:https://blog.csdn.net/qq_27870421/article/details/92646947

Linux命令-grep

使用例子

在单文件、多文件中搜有match_pattern的行:

grep match_pattern     file_name

grep "match_pattern"    file_name

grep -v "match_pattern" file_1 file_2 file_3 ...     在多个文件中搜索,并列出行号

正则表达式查询:(参考博客:https://www.cnblogs.com/xiaoleiel/p/8349486.html)Linux中的通配符与正则表达式是有区别的,此处有部分问题

grep -n '[^g]oo' regular_express.txt        输出行号、匹配有oo,且oo前没有g的

grep -n '[^a-z]oo' regular_express.txt     匹配oo前没有小写字母的

grep -n    '^the'   regular_express.txt      匹配the在行开头的

在正则表达式中

1)^ 符号,在字符类符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意义!

2). (小数点):代表任意单字符

3)?:重复前字符0或1次

4)* (星号):重复前字符,0到任意次

grep -n '\.$' regular_express.txt             匹配以小数点“.”结尾的,小数点有特殊含义,故应该使用转义字符“\”

输出内容调整:

grep -o "match_pattern" file_name      只输出匹配到的内容

grep -c "text" file_name    输出有多少行包括指定的字符串

grep "text" -n file_name   输出时输出行号

grep -l   "text"   file1 file2 file3...     输出包含text的文件名

参考:https://www.cnblogs.com/xiaoleiel/p/8349486.html

https://www.cnblogs.com/fulucky/p/8023025.html

正则表达式:https://www.runoob.com/regexp/regexp-syntax.html