grep

grep命令用于文件内容的搜索,返回所有匹配的行。

$ grep pattern filename

下面是一个例子。

$ grep admin /etc/passwd
_kadmin_admin:*:218:-2:Kerberos Admin Service:/var/empty:/usr/bin/false
_kadmin_changepw:*:219:-2:Kerberos Change Password Service:/var/empty:/usr/bin/false
_krb_kadmin:*:231:-2:Open Directory Kerberos Admin Service:/var/empty:/usr/bin/false

一般情况下,应该使用grep -R,递归地找出当前目录下符合someVar的文件。

$ grep -FR 'someVar' .

別忘了大小不敏感的参数,因为 grep 默认搜索是大小写敏感的。

$ grep -iR 'somevar' .

也可以用grep -l光打印出符合条件的文件名而非文件内容选段。

$ grep -lR 'somevar' .

如果你写的脚本或批处理任务需要上面的输出内容,可以使用 while 和 read 来处理文件名中的空格和其他特殊字符:

grep -lR someVar | while IFS= read -r file; do
    head "$file"
done

如果你在你的项目里使用了版本控制软件,它通常会在 .svn, .git, .hg 目录下包含一些元数据。你也可以很容易地用 grep -v 把这些目录移出搜索范围,当然得用 grep -F 指定一个恰当且确定的字符串,即要移除的目录名:

$ grep -R 'someVar' . | grep -vF '.svn'

部分版本的 grep 包含了 --exclude 和 --exclude-dir 选项,这看起来更加易读。

参数

-i参数表示忽略大小写。

-r表示搜索某个目录下面的所有文件。

$ grep -r admin /etc/

-v过滤包含某个词的行,即grep的逆操作。

# 显示所有包含 vim,但不包含 grep 的行
$ ps | grep vim | grep -v grep

看完两件小事

如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:

  1. 关注我们的 GitHub 博客,让我们成为长期关系
  2. 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
  3. 关注公众号 「IT平头哥联盟」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程

JS中文网是中国领先的新一代开发者社区和专业的技术媒体,一个帮助开发者成长的社区,目前已经覆盖和服务了超过 300 万开发者,你每天都可以在这里找到技术世界的头条内容。欢迎热爱技术的你一起加入交流与学习,JS中文网的使命是帮助开发者用代码改变世界

results matching ""

    No results matching ""