一、grep 使用场景

根据指定的过滤条件对目标文本进行逐行匹配检查,打印匹配的行
就是想要查找的东西 可以是普通字符串、也可是正则表达式

语法:
grep [options] [pattern] file
命令 参数 配置模式 文件数据

参数

解说

-v

排除匹配结果

-n

显示匹配行与行号

-i

忽略大小写

-c

只统计匹配的行数

-E

支持使用扩展的正则表达式元字符

–color=auto

为grep过滤结果添加颜色

-w

只匹配过滤的单词

-o

只输出匹配的内容,而不是将整行内容输出

-q: --quite, --silent:

静默模式,不输出任何信息

案例 ‘cat /etc/passwd > /tmp/test_grep.text’

  • 找出login有关的行 ​ ​grep -n "login" /tmp/test_grep.text ​
  • 查找没有login有关的行 ​ ​grep -n -v "login" /tmp/test_grep.text ​
  • 忽略login大小写的行 ​ ​grep -i "login" /tmp/test_grep.text ​
  • 查找root和sync有关的行 ​ ​grep -E "root|sync" --color=auto /tmp/test_grep.text ​
  • 统计login匹配结果的行数 ​ ​grep -i -c "login" /tmp/test_grep.text ​ ​ 输出行数
  • 找出所有的空行 ​ ​grep -n "^$" /tmp/test_grep.text ​
  • 找出所有的非空行 ​ ​grep -n -v "^$" /tmp/test_grep.text ​
  • 找出以#开头的行 ​ ​grep -n "^#" /tmp/test_grep.text ​
  • 找出非以#开头的行 ​ ​grep -n -v "^#" /tmp/test_grep.text ​
  • 查询非#开头 非空行的行 ​ ​grep -n -v "^#" /tmp/test_grep.text | grep "^$" -v ​
  • 查询以点结尾的行 ​ ​grep -n "\.$" /tmp/test_grep.text ​
  • 查询以/bin/bash结尾的行 ​ ​grep -n "/bin/bash$" /tmp/test_grep.text ​
  • 查询以/bin/bash结尾的行 ​ ​grep -n -o "/bin/bash$" /tmp/test_grep.text ​ ​ (仅输出 行号 /bin/bash)
  • 查询非/bin/bash结尾的行 ​ ​grep -n -v "/bin/bash$" /tmp/test_grep.text ​
  • 找出".ac", 某几个普通字符 ​ ​grep -n ".s" /tmp/test_grep.text ​ ​(以带s字符 例is names等)
  • * 找出前一个字符0次或多次 ​ ​grep -n "i*" /tmp/test_grep.text ​ ​​(以带i字符 例 is time 等)
    @
  • 找出文件中所有小写英文字母 ​ ​grep -n "[a-z]" /tmp/test_grep.text ​
  • 找出文件中所有小写a-f A-Z字母 0-5数字 ​ ​grep -n "[a-fA-Z0-5]" /tmp/test_grep.text ​
  • 找出文件中所有非0-5数字 ​ ​grep -n "[^0-5]" /tmp/test_grep.text ​
  • [a-z] 匹配所有小写单个字母
  • [A-Z] 匹配所有单个大写字母
  • [a-zA-Z]匹配所有的单个大小写字母
  • [0-9]匹配所有的梳子和字母
  • [a-zA-Z0-9] 匹配所有的数字和字母
    @
  • +表示匹配前一个字符1次或多次 grep -E 扩展正则
  • 找出文件中所有chi一次或多次 ​ ​grep -E "chi+" /tmp/test_grep.text ​ ​ @
  • ?匹配前一个字符0次或者1次
  • 找出文件中包含gd或者go?d 的行 ​ ​grep -E "gd?d" /tmp/test_grep.text ​ ​ @
  • |正则中或者意思
  • ?匹配前一个字符0次或者1次
  • 找出文件中包含gd或者go?d 的行 ​ ​grep -E "gd?d" /tmp/test_grep.text ​
  • 查找问价以TXT结尾 文件名包含a或x 的题目 ​ ​find /data -name ".txt"|grep -E "a|x"​ ​​ @
    ()将一个或多个字符捆绑在一起,当做一个整体进行处理
  • 找出god和glad的行​ ​grep -E "good|glad" test.txt​ ​​ 或​ ​grep -E "g(oo|la)d test.txt​
  • 查找l…e 的行(一个点一个字母) ​ ​grep -E "l..e" lovers.txt​ ​ {}
  • 查找l…e 的行(一个点一个字母) ​ ​grep -E "l..e" lovers.txt​
  • 匹配y字符最少2次最多4次 ​ ​grpe -E "y{2, 4}" test.txt​

grep -A -B -C 使用介绍
grep -A -B -C 属于上下文控制(Context control
使用规则如下:
grep -A 显示匹配指定内容及之后的n行
grep -B 显示匹配指定内容及之前的n行
grep -C 显示匹配指定内容及其前后各n行
示例
$ grep -A 5 name test.txt
搜索匹配test.txt文件中与”name”字符串匹配的行,并显示其后的5行

看视频学习 哔哩哔哩的猿来大湿兄
​​ ​ https://www.bilibili.com/video/BV1E14y147Ng​


上一篇: urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: un

下一篇: MySQL数据库语句

Linux grep命令用法详解

grep: Global search regular expression and print out the line.作用:文本搜索工具,根据用户指定的“模式(过滤条件)”对目标文件逐行进行匹配检查,打印匹配的行模式:由正则表达式的元字符及文本字符所编写出的过滤条件 grep [OPTIONS] PATTERN [FILE…] OPTIONS: --color=auto:对匹配到的文本着色后高亮显示 -i, --ignore-case:忽略字符的大小写 -o, --only-matching:仅显示匹配到的字符串本身 -v, --invert-match:显示不能被模式匹配到的行 -E, --extended-regexp:支持使用扩展的正则表达式元字符 -q, --quiet, --silent:静默模式,即不输出任何信息 -A #:after,显示匹配到行和向后#行 -B #:before,显示匹配到行和前#行 -C #:context,