grep常用命令整理
grep命令简介
grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
grep家族
grep家族包括grep、egrep和fgrep:egrep是grep的扩展,支持更多的re元字符;fgrep就是fixed grep或fast grep。
工作机制简要介绍
grep在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
grep常用命令整理
1、从单个文件中查找指定的字符串
grep "this" demo_file
2、从多个文件中查找指定的字符串
grep "this" demo_*
3、查询且忽略大小写
grep -i
4、在文件中匹配正则表达式
基础正则表达式:
1. ? The preceding item is optional and matched at most once.
2. * The preceding item will be matched zero or more times.
3. + The preceding item will be matched one or more times.
4. {n} The preceding item is matched exactly n times.
5. {n,} The preceding item is matched n or more times.
6. {,m} The preceding item is matched at most m times.
7. {n,m} The preceding item is matched at least n times, but not more than m times.
扩展正则表达式:
‘^‘: 锚定行首
‘$’: 锚定行尾
‘.‘: 匹配任一一个字符
‘*’: 匹配零个或多个先前字符
‘?‘:匹配其前面的字符0次或者1次;
‘+’:匹配其前面的字符1次或者多次;
‘{m}‘:匹配其前面的字符m次(\为转义字符)
‘{m,n}’:匹配其前面的字符至少m次,至多n次
‘[]‘: 匹配一个指定范围内的字符 | ‘[^]’匹配指定范围外的任意单个字符
‘<‘或‘\b’:锚定词首,‘>’或‘\b’:锚定词尾(可用<PATTERN>:匹配完整单词)
‘()’:将多个字符当做一个整体进行处理
后向引用:引用前面的分组括号中的模式所匹配到的字符
分组括号中的模式匹配到的内容或被正则表达式引擎自动记录于内部的变量中:
\1:模式从左侧起,第一个左括号及与之匹配的右括号之间模式匹配到的内容
\2:模式从左侧起,第二个左括号及与之匹配的右括号之间模式匹配到的内容…
扩展正则表达式与正则表达式略有不同:
‘[]’:依旧匹配指定范围内的任意单个字符;但是有很多特殊匹配方式。
[:digit:] 匹配任意单个数字
[:lower:] 匹配任意单个小写字母
[:upper:] 匹配任意单个大写字母
[:alpha:] 匹配任意单个字母
[:alnum:] 匹配任意单个字母或数字
[:punct:] 匹配任意单个符号
[:space:] 匹配单个空格
一些地方取消了转义字符的使用:
‘?‘:匹配其前面的字符0次或者1次;
‘+’:匹配其前面的字符1次或者多次;
‘{m}‘:匹配其前面的字符m次(\为转义字符)
‘{m,n}’:匹配其前面的字符至少m次,至多n次
():将一个或多个字符捆绑在一起,当做一个整体进行处理,反向引用照常使用。
‘|’:或(注:‘C|cat’为C与cat,‘(C|c)at才是Cat与cat’)
5、查找全匹配,不包括子字符串
grep -w
6、用grep -A,-B,-C 来查看after/before/around 行
-A, 显示匹配后N行
-B, 显示匹配前N行
-C, 显示匹配前后N行
7、用GREP_OPTIONS来让查找的项醒目
export GREP_OPTIONS='--color=auto' GREP_COLOR='100;8'
8、搜索所有的文件及子目录
grep -r
9、过滤匹配项
grep -v
10、计算匹配的数量
grep -c
11、显示匹配的文件名
grep -l
12、只显示匹配的字符串
grep -o
13、显示行数
grep -n
14、显示匹配的字符字节位置
grep -b
15、ps+grep时不抓到自己的进程
ps -ef | grep ab[c]
16、通常grep解决行内匹配问题,跨行建议awk/sed/perl
17、使用扩展的正则表达式
grep -E