技术文章 > Linux > grep文本搜索 

Grep 文本搜索

Grep 命令是 linux 中的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
Grep 可在一个或多个文件中搜素匹配字符串(模板),如果匹配字符串包括空格,则必须被引用,匹配字符串后的所有字符串被看作文件名。搜索的结果被送到标准输出(stdout),搜索动作不改变原文件的内容。
Grep 命令的命令格式:
grep [option] pattern files

1、选项 option

参数选项解释说明
-c只统计匹配的行数
-v排除匹配结果
-n显示匹配行与行号
-i不区分大小写
-E使用egrep命令
-color = auto为grep过滤结果添加颜色
-w只匹配过滤的单词
-o只输出匹配的内容

2、字符串模板 pattern

Pattern 为正则表达式,使用 regex 规则的字符串模板:
-? : 同时显示匹配行的上下第 ?行,如:grep -n -2 hello test.md 表示除显示有 hello 的行外,还显示其上、下其他两行;
^ : 匹配正则表达式的以“某字符串”开头的行,如:grep "^int" test.md 表示显示所有 int 开头的行;
$ : 匹配正则表达式的以“某字符串”结尾的行,如:grep ");$" test.md 表示显示所有 ); 结尾的行;
< : 从匹配正则表达式的行开始显示,如:grep "\ > : 到匹配正则表达式的行结束,如:grep "hello>/" test.md ;
[ ] : 单个字符匹配,如:grep [a] test.md 找出包含 a 的所有行;
[^ ] : 显示不包括某字符,如:grep [^n] test.md 找出不包含 n 字母的所有行;
[ - ] : 范围匹配,如 grep [A-C] test.md ,即A、B、C都符合要求;如 grep [a,b] test.md ,即只有a和b符合要求;

常用的正则表达式还有:
  [:alnum:]   字母数字集 “a-z A-Z 0-9”
  [:alpha:]   字母集合 “a-z A-Z”
  [:blank:]   空格或制表键
  [:cntrl:]   任何控制字符
  [:digit:]   数字集合 “0-9”
  [:graph:]   任何可视字符(无空格)
  [:lower:]   小写字母 “a-z”
  [:print:]   非控制字符
  [:punct:]   标点字符
  [:space:]   空格
  [:upper:]   大写字母 “A-Z”
  [:xdigit:]   十六进制数字 “0-9 a-f A-F”

3、文件名 files

Files 可以是一个文件名,也可以是多个文件名,如:
grep [^heiha] file1.md file2.md file3.md 
从3个文件中找出 heiha 开头的行。

4、从目录找文件

在指定目录所有文件搜索关键字,并显示文件名,此时 files 为目录名。如:
grep -r "heiha" .
从当前目录找出文件名中包含 heiha 的文件。

5、与管道配合使用

与管道配合,可从其他指令输出的内容中查找内容,如:
cat logic-server.log | grep ERR
从逻辑服日志中,查找错误信息行内容
ps -ef | grep node
从当前应用进程中,查找node.js相关进程


来源:摘自https://blog.csdn.net/weixin_46245859/article/details/126042955,本站 行痴 整理,2023-08-21