优秀的编程知识分享平台

网站首页 > 技术文章 正文

Linux三剑客之grep(linux grep)

nanyue 2024-09-10 16:11:56 技术文章 6 ℃

一、概述

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博客,一样的精彩等你来体验。

Tags:

最近发表
标签列表