当前位置: 主页 > Linux安装教程 > 系统设置 >

玩转linux之强大的grep

时间:2018-01-24 17:14来源:未知 作者:Linux先生 举报 点击:
Grep 是一种强大的文本搜索工具,今天我们就来看一下grep的常用使用方法。

  Grep 是一种强大的文本搜索工具,今天我们就来看一下grep的常用使用方法:
 

  
  一、选项与参数:
  
  -a :将 binary 文件以text 文件的方式搜寻数据
  
  -c :计算找到 '搜寻字符串' 的次数
  
  -i :忽略大小写的不同,所以大小写视为相同
  
  -n :顺便输出行号
  
  -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
  
  --color=auto :可以将找到的关键词部分加上颜色的显示喔
  
  案例:
  
  # grep root /etc/passwd 将/etc/passwd,有出现 root 的行取出来
  
  #grep-n root/etc/passwd 将/etc/passwd,有出现root的行取出来,同时 显示这些行在/etc/passwd 的行号
  
  # grep -v root /etc/passwd 将/etc/passwd,将没有出现 root 的行取出来
  
  # grep -v root /etc/passwd | grep -v nologin 将/etc/passwd,将没有出现 root 和 nologin 的行取出来
  
  # dmesg | grep -n --color=auto 'eth'用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,要将捉到的关键字显 色,且加上行号来表示:
  
  # dmesg | grep -n -A3 -B2 --color=auto 'eth' 用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,在关键字所在行的前 两行与后三行也一起捉出来显示
  
  # grep ‘energywise’ * 在当前目录搜索出带‘energywise’行的文件
  
  # grep -r ‘energywise’ * 在当前目录及其子目录搜索出带‘energywise’行的文件
  
  # grep -l -r ‘energywise’ * 在当前目录及其子目录搜索出带‘energywise’行的文件,但是不显示匹配的行,只显示匹配的文件
  
  二、Grep 与正则表达式:
  
  字符类
  
  1、字符类的搜索:如果我想要搜寻 test 或 taste 这两个单字时,可以发现到,其实她们有共 通的 't?st' 存在~这个时候,我可以这样来搜寻:
  
  #grep -n 't[ae]st' regular_express.txt
  
  2、字符类的反向选择 [^] :如果想要搜索到有 oo 的行,但不想要 oo 前面有 g
  
  # grep -n '[^g]oo' regular_express.txt
  
  3、字符类的连续:再来,假设我 oo 前面不想要有小写字节,所以,我可以这样写[^abcd....z]oo , 但是这样似乎不怎么方便,由於小写字节的 ASCII 上编码的顺序是连续的, 因此,我们可 以将之简化为底下这样:
  
  # grep -n '[^a-z]oo' regular_express.txt
  
  4、当我们在一组集合字节中,如果该字节组是连续的,例如大写英文/小写英文/数字等等, 就 可以使用[a-z],[A-Z],[0-9]等方式来书写,那么如果我们的要求字串是数字与英文呢? 呵呵! 就将他全部写在一起,变成:[a-zA-Z0-9]。
  
  # grep -n '[a-zA-Z0-9]' regular_express.txt
  
  5、行首字符:让 the 只在行首列出。
  
  # grep -n '^the' regular_express.txt
  
  6、行尾字符:让 the 只在行尾列出。
  
  # grep -n 'the$' regular_express.txt
  
  7、显示出文件的空白行
  
  #grep -n '^$' regular_express.txt
  
  8、找出 g 开头与 g 结尾的行,当中的字符可有可无
  
  # grep -n 'g.*g' regular_express.txt

推荐内容