欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

grep的简单使用

程序员文章站 2024-02-23 19:31:28
...

Grep

在file…文件中找到能够匹配pattern字符串的行

  • 基本格式
grep 要匹配的符号 要进行匹配的文件
grep pattern file...
  • pattern 支持正则表达式
    • ^ 匹配开头
    • $ 匹配结尾
    • [a-z] 匹配a-z字符集
    • \d 匹配一个数字
    • . 匹配任意字符一次
    • 量词
      • * 匹配前面的字符任意次
      • ? 匹配前面的字符0次或1次
      • {n,m} 匹配前面的字符n到m次,比如{1,3}则最少匹配1次,最多匹配3次
  • File 可以是一个文件也可以多个文件
    • 一个文件: name.txt
    • 多个文件: 用分号隔开
      • grep a 1.txt 2.txt 3.txt
    • 使用通配符来指定多个文件
      • *匹配文件名中任何字符串,包括空字符串
        • grep a *.log // 在所有log结尾的文件中找出现了a的那些行
      • ? 匹配文件名单个字符
        • grep a test?.log //匹配test1.log,testa.log,testb.log…的文件含有a的一行
      • […] 匹配[]中包含的任何字符
        • grep a test[1-2].log //匹配test1.log,test2.log
      • [!..] 匹配不在[]中包含的任何字符
        • grep a test[!a-z].log
  • 参数
    • -i 忽略大小写来进行匹配
    • -v 打印没有匹配的,反而不打印匹配的
    • -n 显示行号
    • -c 显示总共多少行被匹配了,而不是显示被匹配的具体内容
    • -o 只显示被pattern匹配到的字符串(默认是把匹配到字符的当前行返回)

例子

grep "a" *   //匹配当前目录下所有文件中含有a的行

// 在所有符合test[x].log的文件中匹配,一行中只含有一个数字的行,并返回
// 因为shell里面\有意义,所以要用\\来转义
grep ^\\w$ test?.log  //
// 使用""就不用\\转义了
grep "^\w$" test[1-2].log

// 这里可以匹配到kalpa和Kalpa KALPA。。因为忽略大小写
// 因为加了-n 会显示行号
grep "kalpa" test.log -i -n 

// 只显示每个文件中匹配的次数而不显示具体内容
grep "kalpa" test.log -c
相关标签: linux grep linux