专注app软件定制开发Linux命令之查找字符串grep

概述

grep 专注app软件定制开发命令可以用于在指定文专注app软件定制开发件中通过指定查找模式串。

注:专注app软件定制开发与该命令有关的还有 egrepfgrep 专注app软件定制开发可以关注一下。

语法

专注app软件定制开发该命令的语法如下:

grep [选项] [查找模式] [文件名1, 文件名2, ...]
  • 1

专注app软件定制开发该命令支持的选项有:

选项说明
-a, --text专注app软件定制开发不要忽略二进制的数据
-A <显示行数>, --after-context=<显示行数>专注app软件定制开发除了显示符合范本样式的那一列之外,并显示该行之后的内容
-b, --byte-offset在输出的每一行前显示包含匹配字符串的行在文件中的字节偏移量
-B <显示行数>, --before-context=<显示行数>除了显示符合样式的那一行之外,并显示该行之前的内容
-c, --count只显示匹配行的数量
-C <显示行数>, --context=<显示行数>, -<显示行数>除了显示符合样式的那一行之外,并显示该行之前后的内容
-d <动作>, --directories=<动作>当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作
-e <范本样式>, --regexp=<范本样式>指定检索使用的模式
-E, --extended-regexp每个模式作为一个扩展的正则表达式对待
-f <规则文件>, --file=<规则文件>从expfile文件中获取要搜索的模式,一个模式占一行
-F, --fixed-regexp每个模式作为一组固定字符串对待(以新行分隔),而不作为正则表达式
-G, --basic-regexp将样式视为普通的表示法来使用
-h, --no-filename在在查找多个文件时,指示grep不要将文件名加入到输出之前
-H, --with-filename在显示符合样式的那一行之前,表示该行所属的文件名称
-i, --ignore-case比较时不区分大小写
-l, --file-with-matches列出文件内容符合指定的样式的文件名称
-L, --files-without-match列出文件内容不符合指定的样式的文件名称
-n, --line-number在输出前加上匹配串所在行的行号(文件首行行号为1)
-o, --only-matching只显示匹配PATTERN 部分
-q, --quiet或–silent不显示任何信息
-r, --recursive此参数的效果和指定"-d recurse"参数相同
-s, --no-messages不显示错误信息
-v, --invert-match显示不包含匹配文本的所有行
-V, --version显示版本信息
-w, --word-regexp只显示全字符合的列
-x, --line-regexp只显示整行严格匹配的行
-y此参数的效果和指定"-i"参数相同

注:虽然选项很多,但不需要记住大部分选项,只需要知道该命令的一些常用用法即可。

使用

在文件中查找指定关键字

最常用的用法应该是在文件中查找指定关键字,语法格式如下:

# 语法grep 指定关键字 指定文件# 示例grep "world" log.txt
  • 1
  • 2
  • 3
  • 4

注:待查找的指定关键字建议用双引号引起来,特别是在有空格的情况下。

显示除了匹配关键字之外的所有行

有时候我们想要显示那些除了匹配的关键字之外的所有行,可以加上 -v 选项:

# 语法grep -v 指定关键字 指定文件# 示例grep -v "world" log.txt
  • 1
  • 2
  • 3
  • 4

显示行号

有时候我们希望看到匹配到的行在文件中的行号是多少,那么可以使用 -n 选项:

# 语法grep -n 指定关键字 指定文件# 示例grep -n "world" log.txt
  • 1
  • 2
  • 3
  • 4

统计匹配到的总行数

如果我们想要获取匹配到的总行数,那么可以使用 -c 选项:

# 语法grep -c 指定关键字 指定文件# 示例grep -c "o" log.txt
  • 1
  • 2
  • 3
  • 4

显示匹配行之前或之后几行的内容

除了显示匹配行之外,可能我们还需要显示匹配行之前几行或者之后几行的信息。那么可以使用 -A-B-C 选项:

# 语法grep -A 指定行数 指定关键字 指定文件grep -B 指定行数 指定关键字 指定文件grep -C 指定行数 指定关键字 指定文件# 示例,表示显示 log.txt 文件中匹配到 "world" 的行及下面的 2 行内容grep -A 2 "world" log.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

注:

  • A 选项,是 After 的缩写,表示除了展示匹配行之外,还要展示出匹配行下面的若干行。如 -A 2 表示还展示匹配行下面 2 行的内容。
  • B 选项,是 Before 的缩写,表示除了展示匹配行之外,还要展示出匹配行上面的若干行。如 -B 2 表示还展示匹配行上面 2 行的内容。
  • C 选项,是 -A-B 选项的合体,表示除了展示匹配行之外,还要展示出匹配行上面和下面各若干行。如 -C 2 表示还展示匹配行上面 2 行和下面 2 行的内容。

忽略大小写

有时候匹配的时候,希望忽略掉大小写,让大写和小写字母都能被匹配到,可以使用 -i 选项:

# 语法grep -i 指定关键字 指定文件# 示例grep -i "WORLD" log.txt
  • 1
  • 2
  • 3
  • 4

多文件查找

grep 命令是支持多文件查找的,显示结果它会输出匹配行内容和匹配行所在文件名。

如果想要只显示匹配内容在那些文件中,可以加上 -l 选项,得到的就是一个包含有匹配内容的文件列表,而如果使用 -L 选项,则会得到一个不包含有匹配内容的文件列表。

支持基本正则表达式

grep 命令是支持正则表达式的,但是是支持基本正则表达式。即在基本正则表达式(BRE)中,只承认“^”、“$”、“.”、“[”、“]”、“*”这些是元字符,所有其他的字符(如 “(”、“)”、“{”、“}”、“?”、“+”、“|” 等)都被识别为普通字符。语法如下:

# 语法grep 基本正则表达式 指定文件# 示例,搜索 log.txt 文件中以 "h" 开头的行grep "^h" log.txt
  • 1
  • 2
  • 3
  • 4

支持扩展正则表达式

如果要使用扩展正则表达式,即支持 “(”、“)”、“{”、“}”、“?”、“+”、“|” 等元字符。那么需要加上 -E 选项,或者使用 egrep 命令:

# 语法grep -E 扩展正则表达式 指定文件# 示例,搜索 log.txt 文件中包含至少一个 "h" 字符的行grep -E "h+" log.txt
  • 1
  • 2
  • 3
  • 4

精确搜索某个词

如果我们想要精确搜索某个词,那么使用 -w 选项。

以递归方式查找符合条件的文件

如果我们要查找指定目录下所有符合条件的文件,那么可以使用 -r 选项:

# 语法grep -r 指定关键字 指定目录名# 示例,查找 /home/ 目录下所有包含 "hello" 字符串的文件grep -r "hello" /home/
  • 1
  • 2
  • 3
  • 4

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发