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可以搜索指定文件的内容,并把匹配的行打印出来,搜索中能够使用正则表达式精确搜索
使用格式如下:
更全的参数选择:(参考:https://blog.csdn.net/qq_27870421/article/details/92646947)
使用例子
在单文件、多文件中搜有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