当前位置: 首页 > news >正文

grep 命令

文章目录

  • grep 命令
    • grep 命令概述
    • grep 命令核心选项及示例
      • 模式选择和解释选项
      • 输出控制选项
      • 查找文件选项
      • 输出内容上下文控制选项

grep 命令

grep 命令概述

grep 是 Linux 系统中核心命令之一,核心功能是从文本文件或管道数据流中筛选匹配的行及数据,与 sed(擅长修改文本)、awk(擅长格式化输出)并称为 Linux 操作文本的 “三剑客”,其中 grep 主打过滤功能。

grep 命令核心选项及示例

根据功能可将选项分为模式选择与解释输出控制查找文件输出内容上下文控制四大类,以下是常用选项的详细说明及实操示例(示例中words为测试文本文件)。

模式选择和解释选项

此类选项用于定义匹配模式的规则,支持正则、多模式等需求:

选项功能示例
-E支持扩展正则表达式,相当于 egrep 命令`[1aoma@she11 ~]s cat wordsgrep -E '(dog){3}'[1aoma@she11 ~] cat wordsegrep ‘(dog)[3}’`,输出 “dogdogdog”“dogdogdogdog”、、
-e使用多个 - e 选项匹配多个 PATTERNS`[1aoma@she11 ~]s cat wordsgrep -e “cat” -e 'dog’[1aoma@she11 ~]s cat wordsegrep 'catdog’`,输出含 “cat” 或 “dog” 的行(如 “cat”“category”“dog” 等)、、
-f从文件读取多个 PATTERNS先执行 [1aoma@she11~]s echo -e 'cat\ndog'>pattens_file 创建模式文件,再执行 `[1aoma@she11~] s cat wordsgrep -f pattens_file`,输出含 “cat” 或 “dog” 的行、、、
-i忽略大小写匹配`[1aoma@she11 ~]s cat wordsgrep -i ‘cBt’`,输出 “cbt”、、
-W匹配整个单词`[1aoma@she11 ~]s cat wordsgrep -w 'cat’[1aoma@she11 ~]s cat wordsgrep ‘\bcat\b’`,输出 “cat”“hello cat”、、
-X匹配整行`[1aoma@she11 ~]s cat wordsgrep -x 'cat’[1
[root@client ~ 11:19:05]# echo dogdogdogdog >>word 
[root@client ~ 11:20:03]# echo dogdogdog >>word 
[root@client ~ 11:20:12]# cat word | grep -E '(dog){3}'
dogdogdogdog
dogdogdog
[root@client ~ 11:20:13]# cat word | egrep  '(dog){3}'
dogdogdogdog
dogdogdog
[root@client ~ 11:20:27]# cat word | grep -e 'cat' -e 'dog'
cat
category
acat
concatenate
dog
hello cat
dog
dogdogdogdog
dogdogdog
[root@client ~ 11:20:44]# echo -e 'cat\ndog' > newword
[root@client ~ 11:21:16]# cat newword 
cat
dog
[root@client ~ 11:21:25]# cat word | grep -f newword 
cat
category
acat
concatenate
dog
hello cat
dog
dogdogdogdog
dogdogdog
[root@client ~ 11:21:38]# cat word | grep -i 'cBt'
cbt
[root@client ~ 11:22:43]# cat word | grep -w 'cat'
cat
hello cat
[root@client ~ 11:22:59]# cat word | grep '\bcat\b'
cat
hello cat
[root@client ~ 11:23:13]# cat word | grep -x 'cat'
cat
[root@client ~ 11:23:27]# cat word | grep '^cat$'
cat

输出控制选项

此类选项用于控制匹配结果的输出形式:

选项功能示例
-v反向匹配,显示与 PATTERNS 不匹配的项目`[1aoma@she11~]s cat wordsegrep -v "^d^c",输出“acat”“hello cat”;也可用于忽略注释行和空白行,如 [1aoma@she11~]s egrep -v "^#^$" /etc/profile`、、
-m控制最大匹配数目,匹配特定次数后停止匹配`[1aoma@she11~]s cat wordsgrep -m2 ‘dog’`,输出前 2 个含 “dog” 的行(“dog”“dogdog”)、、
-C显示匹配到项目的数量`[1aoma@she11 ~]s cat wordsgrep -c ‘dog’`,输出 “4”(假设文件中含 4 个匹配行)、、
-b显示匹配项目的字节偏移量`[1aoma@she11~]s cat wordsgrep -b ‘cat’`,输出 “0:cat”“4:category”“13:acat” 等、、
-n显示匹配项目的行号`[1aoma@she11 ~]s cat wordsgrep -n ‘cat’`,输出 “1:cat”“2:category”“3:acat” 等、、
-o只显示匹配到的内容,行中其他内容不显示`[1aoma@she11 ~]s cat wordsegrep -o ‘(dog){3}’`,输出 “dogdogdog”“dogdogdog”、、
-q不显示任何正常输出,用于脚本判定文件是否含特定内容,通过$?查看匹配结果找到匹配时:`[1aoma@she11 ~] s cat wordsegrep -q '(dog){3}'后执行[1aoma@she11~]$echo $?`,输出 “0”;未找到时输出 “1”、、、
-S不显示任何错误输出[1aoma@she11~]s grep -s '^SELINUX=' /etc/shadow /etc/selinux/config,仅输出/etc/selinux/config:SELINUX=disabled,不显示权限错误、、
[root@client ~ 11:23:46]# cat word | egrep -v '^d|^c'
acathello cat
[root@client ~ 11:42:29]# cat word | grep 'dog'
dog
dog
dogdogdogdog
dogdogdog
[root@client ~ 11:42:56]# cat word | grep -m2 'dog'
dog
dog
[root@client ~ 11:43:02]# cat word | grep -m3 'dog'
dog
dog
dogdogdogdog
[root@client ~ 11:43:06]# cat word | grep -c 'dog'
4
[root@client ~ 11:43:17]# cat word | grep -b 'cat'
0:cat
4:category
13:acat
18:concatenate
70:hello cat
[root@client ~ 11:43:41]# cat word | grep -n 'cat'
1:cat
2:category
3:acat
4:concatenate
15:hello cat
[root@client ~ 11:43:48]# cat word | egrep -o '(dog){3}'
dogdogdog
dogdogdog
[root@client ~ 11:44:14]# cat word | egrep  '(dog){3}'
dogdogdogdog
dogdogdog
[root@client ~ 11:44:45]# cat word | egrep  -q '(dog){3}'
[root@client ~ 11:45:20]# echo $?
0
[root@client ~ 11:45:27]# cat word | egrep  -q '(dog){3}acsafsa'
[root@client ~ 11:45:35]# echo $?
1

查找文件选项

此类选项用于递归查找目录中的文件,或控制文件筛选规则。

选项全称 / 功能说明示例
-r--recursive,递归查找目录中的所有文件(不跟随软链接)递归查找/etc目录中含 “SELINUX=” 的文件:grep -r '^SELINUX=' -S /etc输出:/etc/selinux/config:SELINUX=disabled
-R--dereference-recursive,递归查找并跟随软链接用法与-r一致,仅多了 “跟随软链接”:grep -R '^SELINUX=' -S /etc
-h--no-filename,不显示匹配内容所在的文件名递归查找时仅显示匹配内容:grep -r '^SELINUX=' -S -h /etc输出:SELINUX=disabled(无路径)
-H--with-filename,显示匹配内容所在的文件名(默认)递归查找时显示路径:grep -r '^SELINUX=' -S -H /etc输出:/etc/selinux/config:SELINUX=disabled
-l--files-with-matches,仅显示包含匹配内容的文件名显示/etc中含 “SELINUX=” 的文件:grep -r '^SELINUX=' -S -l /etc输出:/etc/selinux/config
-L--files-without-match,仅显示不包含匹配内容的文件名显示/etc中不含 “SELINUX=” 的最后 5 个文件:`grep -r ‘^SELINUX=’ -S -L /etctail -5 <br>输出:如/etc/gdm/custom.conf/etc/nfs.conf` 等
--include=GLOB仅查找符合 GLOB 模式的文件(如.conf后缀)递归查找/etc.conf文件里的 “SELINUX=”:grep -r '^SELINUX=' -S --include='*.conf' /etc
--exclude=GLOB跳过符合 GLOB 模式的文件递归查找时跳过.log文件:grep -r 'pattern' -S --exclude='*.log' /etc

输出内容上下文控制选项

此类选项用于显示匹配行的前后上下文(如前 N 行、后 N 行),便于查看匹配内容的周边信息。

选项全称 / 功能说明示例
-B--before-context=NUM,显示匹配行及前 NUM 行查找 IP“10.1.8.88” 并显示前 2 行:`ip addrgrep ‘10.1.8.88’ -B2`输出:匹配行的前 2 行 + 匹配行
-A--after-context=NUM,显示匹配行及后 NUM 行查找 “ens32:” 并显示后 2 行:`ip addrgrep ‘ens32:’ -A2`输出:匹配行 + 匹配行的后 2 行
-C--context=NUM,显示匹配行及前后各 NUM 行(等效于-NUM查找 “10.1.8.88” 并显示前后各 2 行:`ip addrgrep ‘10.1.8.88’ -C2<br>或ip addrgrep ‘10.1.8.88’ -2`输出:匹配行的前 2 行 + 匹配行 + 匹配行的后 2 行
--color[=WHEN]高亮显示匹配内容(WHEN:always强制高亮、never不高亮、auto自动)高亮匹配 “cat” 的内容:`cat wordsgrep --color=auto ‘cat’`输出
http://www.dtcms.com/a/431495.html

相关文章:

  • 网站开发运营专业做足球体彩网站
  • 做外贸网站的价格最新新闻热点事件2021年10月
  • iBizModel 实体值规则模型(PSDEFVALUERULE)详解与应用
  • 大数据Spark(六十五):Transformation转换算子groupByKey和filter
  • sward入门到实战(11) - 如何有效保障文档的安全可靠
  • Qt---尺寸调整函数汇总
  • Linux 命令:nohup
  • 网站怎么制作做泉州互联网公司排名
  • 做ppt软件怎么下载网站电商网站系统建设考试
  • AI行业应用全景:从金融风控到智能制造的落地实践与技术解析
  • 公司网站怎么建立需要多少钱北京太阳宫网站建设
  • java线上问题排查-Java 进程CPU高
  • Vala编程语言高级特性-弱引用和所有权
  • Java反射和注解
  • 个人网站导航html源码哪家网站推广好
  • CentOS 7 网络连接问题
  • wordpress国内主题昆山网站优化建设
  • 宁波网站建设大概要多少钱宿州市做网站建设的公司
  • php快速建站工具网站建设策划书的心得
  • 机关公文写作网站公众号制作开发公司
  • ASM Bytecode Viewer 插件查看kotlin和java文件的字节码
  • 公司都是自己制作网站网站如何减少404跳转
  • 链表转置算法
  • 【linux】多线程
  • C语言之详解操作符
  • 2003 您的安全设置不允许网站使用安装网站建设中源码下载
  • 如何做自己的网站系统怎样制作一个app软件
  • 网站建设 要学多久产品推广渠道有哪些
  • 【Linux】进程控制(一) 进程创建、终止与等待概念与实战讲解
  • 【C++】——new和delete与malloc和free的区别