grep 技巧10则

本文介绍grep命令的高级用法,包括多个关键字查找、单词精确匹配、忽略大小写搜索等,并提供了实用的例子来展示如何高效地利用这些功能。

1 多个关键字查找
    1.1 关键字间 or
    i. 使用-e

  1. #包含了string.h或者stdlib.h的头文件
  2. grep -l -e 'string.h' -e 'stdlib.h' /usr/include/*.h
    -e 选项还可以避免 关键字是-开头的导致选项解读失败。
    ii. 使用元字符 |
  1. grep 'strint.h|stdlib.h' /usr/include/*.h
  2. #使用-E 看着舒服
  3. grep -E 'string.h|stdlig.h' /usr/include/*.h
    iii. 使用-f file
  1. cat >multi_pattern
  2. stdlib.h
  3. string.h
  4. grep -l -f multi_pattern /usr/include/*.h

    1.2 关键字间 and
    i. 通过管道
  1. #同时包含'hello','world'的行
  2. echo hello world | grep '<hello>' | grep '<world>'
    ii. 通过正则 |
  1. grep -E 'pattern1.*pattern2|pattern2.*pattern1'
    如果包含2个关键字还好,要是n个就有n!种可能!    

2. 单词匹配
    i. -w(gnu 选项)
  1. grep -w 'main' /usr/include/*.h
    这个-w很方便
    ii. <> 
  1. grep '<main>' /usr/include/*.h

3.善用 -E
    -E选项启用 extended expression,正则写起来更加灵活
  1. #查看gcc帮助文件里两个the/that/and/or连在一起的行
  2. man gcc | grep -E '(<the>|<that>|<and>|<or>) 1'
  3. man gcc | grep -E -w '(the|that|and|or) 1'
  4. #查看gcc帮助文件里含两个连续单词的行
  5. man gcc | grep -E -w '([a-zA-Z]+) 1'
    使用-E让书写更方便,省去很多的,同时功能更强大。

4 忽略大小写 -i
  1. #查看INT_MAX的值
  2. grep -i 'int_max' /usr/include/limits.h
    -i与n同时使用的乱象
  1. #匹配连续相同单词
  2. echo 'it IT' | grep -i -w -E '([a-z]+) 1'
  3. echo 'it IT' | grep -E -w '([a-zA-Z]+) 1'
    这是两个相同的单词吗?是的,因为告诉grep不计大小写的!    
    有的时候不要光图方便会不准确。

5 递归查找 -r(posix 未说明)
  1. #查看日志的错误信息
  2. grep -i -w -r -E 'error|failed|failure' /var/log |less

6 显示匹配行周围行 (posix 未说明)
    B/A/C(before/after/context)
    -B n
    -A n
    -C n

7 取反-v
  1. grep -v -w 'hello' filename
    如果没有取反,世界将不再美丽

8 匹配数 -c
  1. echo aaaa | grep -c 'a'
    这个输出是1!因为grep是行匹配的

9 输出文件名 -l

  1. grep -l -r -i -w 'filename_max' /usr/include/*.h

10 只输出匹配部分-o (gnu 选项)

  1. echo abcddf |grep -o 'dd'

转载于:https://www.cnblogs.com/MagicLetters/archive/2011/10/09/4382761.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值