Linux grep命令详细教程
[本文出自天外归云的博客园]
简介
Linux grep命令是一种非常常用的文本搜索工具,它可以在给定的文件中搜索匹配的字符串,并输出匹配的行。grep是全称“global search regular expression print”,可以识别正则表达式,并使用正则表达式进行搜索。
选项
以下是 grep 的所有选项:
grep [options] [pattern] [files]
-a, --text: 将二进制文件作为文本文件处理。-c, --count: 显示匹配行数,而不是行本身。-e pattern, --regexp=pattern: 查找指定的模式,支持多个模式。-f file, --file=file: 从文件中读取模式,每个模式占一行。-i, --ignore-case: 忽略大小写。-l, --files-with-matches: 只打印文件名,而不是行本身。-n, --line-number: 在每行的前面打印行号。-r, --recursive: 遍历子目录中的文件。-v, --invert-match: 输出不匹配的行。-x, --line-regexp: 仅匹配整行。-w, --word-regexp: 仅匹配整个单词。
pattern 通常是一个正则表达式,用于匹配指定的文本模式。
files 可以是若干个文件,也可以是目录。
以上是 grep 命令的所有选项,更多信息可以使用 man grep 在终端中查看。
常用grep选项举例
下面是常用的grep选项及其举例:
- 搜索指定字符串
可以使用grep搜索包含指定字符串的文件或文件夹,例如:
grep "hello" file.txt
grep "hello" folder/file.txt
- 搜索多个字符串
使用-E选项可以在同一行中搜索多个字符串。
grep -E "hello|world" file.txt
- 忽略大小写
使用-i选项可以忽略大小写的差异。
grep -i "hello" file.txt
- 输出行号
使用-n选项可以输出匹配字符串所在行的行号。
grep -n "hello" file.txt
- 反向搜索
使用-v选项可以输出不包含指定字符串的行。
grep -v "hello" file.txt
- 搜索某个范围内的行
使用 -A, -B, 或-C选项搜索特定范围内的行。
grep -A 2 "hello" file.txt #输出包含“hello”的行以及后两行。
grep -B 2 "hello" file.txt #输出包含“hello”的行以及前两行。
grep -C 2 "hello" file.txt #输出包含“hello”的行以及前后两行。
- 搜索整个单词
使用-w选项可以搜索指定单词作为整个单词匹配。
grep -w "hello" file.txt
- 统计匹配次数
使用-c选项可以统计匹配字符串的个数。
grep -c "hello" file.txt
- 搜索指定文件类型
使用通配符可以搜索特定类型的文件或使用 --include选项来仅搜索指定文件类型。
grep "hello" *.txt
grep "hello" --include "*.txt" folder/
- 搜索子目录
使用-r或-R选项可以搜索子目录的文件。
grep -r "hello" folder/
grep -R "hello" folder/
- 不忽略二进制文件
使用-a选项可以强制grep搜索二进制文件。
grep -a "hello" binary_file.bin
- 搜索时忽略特定目录
使用 --exclude-dir选项来忽略特定目录的搜索。
grep -r "hello" folder/ --exclude-dir=log/
- 搜索特定行数
使用 -m 选项指定只搜索文件中的前几行。
grep -m 10 'hello' file.txt # 只搜索文件中的前10行
- 输出匹配字符串前后的内容
使用 -o 选项仅输出匹配字符串,而 -A 和 -B 选项可以输出字符串前后的内容。
grep -o 'hello' file.txt # 只输出匹配到的 'hello' 字符串,而不包含它前后的内容
grep -A 3 'hello' file.txt # 输出包含 'hello' 字符串的行以及后三行
grep -B 2 'hello' file.txt # 输出包含 'hello' 字符串的行以及前两行
- 显示不匹配行
使用 -L 选项输出不匹配指定字符串的行。
grep -L 'hello' file.txt # 输出不匹配 'hello' 字符串的行
- 显示匹配行前几行和后几行的内容
使用 -C 选项,可以同时输出匹配字符串前后几行的内容。
grep -C 2 'hello' file.txt # 输出包含 'hello' 字符串的行以及前后两行内容
- 搜索多个文件
可以一次性搜索多个文件。
grep 'hello' file1.txt file2.txt file3.txt # 搜索 file1.txt, file2.txt, file3.txt 文件中的 'hello' 字符串
- 搜索时忽略空白字符
使用 -w 选项,可以忽略匹配字符串前后的空格、制表符等空白字符。
grep -w 'hello' file.txt # 忽略匹配字符串前后的空格、制表符等空白字符
- 搜索时查看匹配字符串的上文或下文
使用 -B 和 -A 选项,可查看匹配字符串上下文的内容。
grep -B 2 'hello' file.txt # 输出包含 ‘hello’ 字符串的行以及匹配字符串前2行
grep -A 3 'hello' file.txt # 输出包含 ‘hello’ 字符串的行以及匹配字符串后3行
以上就是grep的所有功能举例。
Linux grep命令详细教程的更多相关文章
- 如何使用Unix/Linux grep命令——磨刀不误砍柴工系列
http://man.linuxde.net/grep ---------------------------------------------------- 如何使用Unix/Linux gre ...
- linux grep命令总结
风生水起善战者,求之于势,不责于人,故能择人而任势. 博客园 首页 新随笔 联系 订阅 管理 posts - 791, comments - 394, trackba ...
- linux grep命令
linux grep命令1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressio ...
- linux grep命令详解
linux grep命令详解 简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来 ...
- Linux grep命令详解[备份]
linux grep命令 1.作用Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来.grep全称是Global Regular Expressi ...
- linux grep命令(linux在文件中搜索内容)
转自:https://www.cnblogs.com/end/archive/2012/02/21/2360965.html linux grep命令 1.作用Linux系统中grep命令是一种强大的 ...
- 最详细的 linux grep命令教程
简介 grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它 ...
- Linux中find、grep命令详细用法
在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 ...
- Linux find、grep命令详细用法
在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下:find命令 find命令的一般形式 ...
- Linux Tar 命令简明教程
Tar 命令经常用但是它的各种参数又总是记不住,因此彻底梳理了一下,再也不会忘记. Tar 是 Linux 中的(压缩)归档工具. 归档的意思与打包相同,就是把文件或目录或者多个文件和目录打包为一个文 ...
随机推荐
- Vue的Component name报错
问题描述: Component name "xxxxx" should always be multi-word.eslintvue 解决方案: 在项目目录中找到 .eslintr ...
- 2020.4.28关于pta的总结
0.前言 这次作业针对的是oo程序设计第二单元(5-8周)的作业,在整体当中属于第4到第6次作业. 此三次作业的知识要点为:继承类,多态性,字符串,结构类,接口类. 此三次作业的时间为20.4.12- ...
- 京东-Docker
关于 Docker 版本的<使用与更新>教程修订日期:2021年 3 月 14 日ㅤ 一.基础使用教程1. 进入与退出容器:docker exec -it jd /bin/bash注意:e ...
- unity 普通项目转URP项目
1.导入UniversalRP (PackageManager 导入)2.创建Pipeline Asset creat-->Rendering-->UniversalRender ...
- 应用和 IPv6
应用和 IPv6 前言 在数据中心网络IPv6协议改造时,我们通常更关注路由交换的部分.对于应用系统适配IPv6 网络确缺少关注,本文旨在更多的讨论应用和IPv6 的关系,帮助个人.公司和组织能够更改 ...
- 实验七:基于REST API的SDN北向应用实践
(一)基本要求 编写Python程序,调用OpenDaylight的北向接口实现以下功能 (1) 利用Mininet平台搭建下图所示网络拓扑,并连接OpenDaylight: (2) 下发指令删除s1 ...
- TensorFlow安装填坑之路(Windows环境)
最近跟着简单粗暴 TensorFlow 2中的教学活动ML Study Jam 2020学习TensorFlow,记录下在Windows环境中安装TensorFlow时遇到的那些坑. TensorFl ...
- Vscode 界面语言换成中文
作为编译器,Visual Studio Code是非常多能化的,但是界面英文对于我这种菜鸟新手造成了很大的困扰. 所以切换成中文更方便. Ctrl+shift+x 在左侧出现"扩展&qu ...
- 在CentOS中搭建NFS
概述 NFS是一款经典的网络文件系统,在Linux上我们可以通过创建一个NFS服务在不同的服务器之间共享磁盘文件,而不用在多个服务器之间进行不断的拷贝复制,麻烦且浪费存储空间.在k8s中我们也可以使用 ...
- 使用float进行比较问题处理
float compare Abstract 使用float数据进行精确计算和比较,可能由于精度问题导致程序逻辑异常. Explanation 使用float数据进行比较,计算机表达double和fl ...