网站首页 > 技术文章 正文
一、概述
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
这也是一个我们比较常用的命令之一,好多时候虽然没通过系统的学习,但是我们还是会经常用到。通过帮助文档我们可以得知,egrep、fgrep是grep的别名。网上一些文章说egrep、fgrep与grep有区别,这种说法是不准确的。让我们来用实际例子来看一下:
[grep@GeekDevOps ~]$ alias | grep grep
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
再通过man看一下:
[grep@GeekDevOps ~]$ man grep
General Commands Manual GREP(1)
NAME
grep, egrep, fgrep - print lines matching a pattern
SYNOPSIS
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
但是,pgrep跟grep就有点区别了,大家可别搞混淆啦!接下来的内容就只扯grep这个梗!
二、使用介绍
1.命令格式(用法)
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
在每个 FILE 或是标准输入中查找 PATTERN。
默认的 PATTERN 是一个基本正则表达式(缩写为 BRE)。
例如: grep -i ‘hello world’ menu.h main.c
2.选项(也就是上面提到的:OPTIONS)
以上内容均来自grep –help,本人仅作部分翻译及收集整理。更多详细内容可以参考:man grep。
3.使用示例
帮助内容看起来有点多,我们就挑选比较常用的来学习好了。
(1)常规用法
-a :将二进制文件以文本文件的方式查找数据,也就是不忽略二进制文件内的查找。
[grep@GeekDevOps ~]$ file /bin/dir
/bin/dir: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=cb457e6070d3129721df79b26c999b4d08ed1ea7, stripped
[grep@GeekDevOps ~]$ grep "dir" /bin/dir
匹配到二进制文件 /bin/dir
?:匹配之前的项一次或0次(单独的?是不支持基本表达式的,注意区分以下2图)。
+:匹配之前的项一次或者多次。
*:匹配0次或多次,比较常用。
{}:匹配之前的项n次,n可以为0。
{m,}:匹配之前的项至少m次。
{m,n}:匹配之前的项至少m次,之多n次。
():用于创建一个匹配的子串。
|:交替匹配|两边的任意一项。
最常用的正则表达式至此基本介绍完毕。在后面的sed及awk的使用中仍然会使用到正则表达式,在相关部分又继续介绍POSIX及元字符类的表达式。这个代码阅读体验真的不是很好,所以我在文中穿插了大量图片,感兴趣的小伙伴可以移步我的同名CSDN博客,一样的精彩等你来体验。
猜你喜欢
- 2024-09-10 oracle实用sql分享:杀进程、长时间操作等等
- 2024-09-10 走在前沿的弄潮儿,怎能不会Git的那些奇技淫巧
- 2024-09-10 TCP“三次握手,四次挥手”你真的懂吗?
- 2024-09-10 制作 deb 软件包(如何制作deb包)
- 2024-09-10 详解虚拟化之KVM概念、架构、功能、常用工具及部署
- 2024-09-10 Linux find命令一定要知道这些(linux find命令的使用)
- 2024-09-10 inux 文本处理三剑客--grep/sed/awk
- 2024-09-10 db2入门必看命令清单--日常运维必需
- 2024-09-10 浅谈Linux中的&&和ll(linux中atime)
- 2024-09-10 浅谈Linux中的&&和ll,补充&和l
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)