linux中的三剑客之一:grep

一、介绍:

grep:是一种Unix/Linux命令,它可以在文本文件中搜索指定的字符串,并显示匹配的行。它可以使用正则表达式来搜索文本,并可以搜索多个文件。

二、命令:

参数    说明
-b    在输出的每一行显示包含匹配字符串的行在文件中的字节偏移量
-c(count)    仅显示找到的行数
-i(ignore)    显示找到的行,比较时不区分大小写
-h    在查找多个文件时,指示grep不要将文件名加入到输出之前
-l    显示首次匹配串所在的文件名并用换行符将其隔开。
-n(line-number)    显示找到的行,显示行号(文件首行行号为1)
-o(only-matching)    只显示匹配的内容
-A    如果匹配成功,则将匹配行及其后n行一起打印出来
-B    如果匹配成功,则将匹配行及其前n行一起打印出来
-C    如果匹配成功,则将匹配行及其前后n行一起打印出来
-E    等于egrep,扩展
--color    高亮颜色显示匹配到的字符串
-v(invert,反向)    显示没有匹配字符串的行
-x(line-regexp)    只显示整行严格匹配的行

例子1:

grep 'text file' Readme.txt   # 在文件Readme.txt中搜索字符串'text file'

例子2:

grep 'text file' *   # 在所有文件中搜索字符串'text file'

例子3:

grep 'text file' *.java   # 在所有的.java文件中搜索字符串'text file'-

使用特殊符号进行字符串的匹配:

匹配模式    说明
grep h 文件名    查找文件里有字符h的行
grep ^q 文件名    显示匹配以q开始的行
grep ^[ ^q ] 文件名    显示不匹配以q开头的行
grep ^[0-9] 文件名    显示匹配以数字开头的行
grep q$ 文件名    显示匹配以q结束的行
grep ^$    显示空白行
grep -r h ./*    如果要明确搜索当前目录中的子目录有h的行
grep -d skip h ./*    忽略当前目录下的子目录下的普通文件

例子1:

grep ^SELINUX /etc/selinux/config    # 查找以SELINUX开头的行数据

例子2:

grep ^$ passwd    # 显示要一个文件中空行

例子3:

grep ^[^$] passwd   # 显示要一个文件中空行 

 

posted on 2024-01-23 08:24  一先生94  阅读(9)  评论(0编辑  收藏  举报

导航