Linux学习-grep

Linux使用过程中常用的命令grep。

Linux中使用的GNU版的grep

语法:
grep 在数据中查找一个字串时,是以“整行”为单位来进行数据的撷取的。也就是说,它只会把含有你搜索字串的行显示在屏幕上,其他的就丢弃了。

1
2
3
4
5
6
7
8
grep [-acinvAB][--color=auto] 'keywords' filename
选项与参数:
-a : 将binary文件以text文件的方式搜寻数据
-c : 计算找到'keywords'的次数
-i : 忽略大小写的不同
-n : 输出带有行号
-v : 反向选择,亦即显示出没有'keywords'内容的那一行
--color=auto : 可以将找到的关键词加上颜色显示

  • 用dmesg列出核心信息,再以grep找出内含eth那行,在关键字所在行的前两行与后三行也一起显示出来

    1
    dmesg | grep -n -A3 -B2 --color=auto 'eth'
  • 根据文件内容递归查找目录

    1
    2
    3
    grep 'keywords' * //在当前目录搜索带'keywords'行的文件
    grep -r 'keywords' * //在当前目录以及子目录下搜索'keywords'行的文件
    grep -l -r 'keywords' * //在当前目录以及子目录下搜索'keywords'行的文件,但不显示匹配的行,只显示匹配的文件

加强版egrep

在Linux下可以使用 grep -E 达到同样的效果!
打印出所有包含NW或EA的行:

1
2
3
egrep 'NW|EA' testfile
grep -E 'NW|EA' testfile
grep 'NW\|EA' testfile // 这种情况在正则符号前使用了跳脱字符,grep会自动启用扩展选项-E

削弱版fgrep

fgrep查询速度比grep命令快,但是不够灵活:它只能查询固定的文本,而不能使用任何通用字符或正则表达式。

1
2
fgre '*' /etc/profile
grep -F '*' /etc/profile