`

ma系列之-8-grep

 
阅读更多

 

1 概念:

 

grep ---> global reserch by expression

根据模式搜索文本,并将符合模式的文本行显示出来。

 

 

2 特点:

做部分匹配的,显示的是符合条件的整行数据,重点展示的是匹配到的那个字段。

 

 

3 写法:

 

grep [options] PATTERN [FILE...]
 -i: 忽略大小写
 --color 匹配到的带颜色展示
 -v: 显示没有被模式匹配到的行
 -o:只显示被模式匹配到的字符串

 

匹配次数(贪婪模式):

匹配其前面的字符任意次 ----> 一定要记住,*表示匹配的是前面的字符 比如  a*b表示匹配 前面字符a为任意多次的单词 
eg:
[root@chinadaas109 zhoumingtest]# cat  test
ab 
aab
abb
acb
[root@chinadaas109 zhoumingtest]# grep --color -o 'a*b' test  表示查找b前面出现字符a为0或者多次的单词,并将符合条件的单词打印出来
ab
aab
ab
b
b

 

 

 

4 Pattern介绍, 正则表达式:

 

正则表达式:REGular EXPression, REGEXP 正则里面有一些元字符,这些元字符本身没有含义,

只是表示一些统配的含义。

 

 

元字符:

.: 匹配任意单个字符
[]: 匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
 字符集合:[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:]

.*: 任意长度的任意字符
\?: 匹配其前面的字符1次或0次,  eg: # grep --color -o 'a\?b' test
\{m,n\}:匹配其前面的字符至少m次,至多n次
 \{1,\}: 至少一次
 \{0,3\}: 至少0次,最多3次

 

 

位置锚定:

 

位置锚定:
^: 锚定行首,此字符后面的任意内容必须出现在行首
$: 锚定行尾,此字符前面的任意内容必须出现在行尾
^$: 空白行

应用:
查询inittab文件内的空白行 
# grep '^$' /etc/inittab | wc -l
0
查询inittab文件内末尾为数字的行 
# grep '[[:digit:]]$' /etc/inittab
#   5 - X11


\<或\b: 锚定词首,其后面的任意字符必须作为单词首部出现
\>或\b: 锚定词尾,其前面的任意字符必须作为单词的尾部出现

eg: \<root\> 表示匹配整行中只有root这个单词的行
查询以root为行尾的行
# cat test
ab 
aab
abb
acb
rooter
the user is root
# grep 'root\>' test
the user is root

 

 

 

分组:

 

 

 

分组:
\(\)
 \(ab\)*   ---> 分组的目的主要是为了让后面能在继续用到前面的内容 
 后向引用(前面出现什么,后面就能引用到什么)
 \1: 引用第一个左括号以及与之对应的右括号所包括的所有内容
 \2: 引用第二个左括号以及与之对应的右括号所包括的所有内容
 \3: 引用第三个左括号以及与之对应的右括号所包括的所有内容
 
 
# cat test
he love his lover
she like her lover
he like his liker
she love her liker
# grep '\(l..e\).*\1' test   ---> 反向引用的案例
he love his lover
he like his liker

 

 

 案例:

 

1 判断当前系统上是否有用户的默认shell为bash;
   如果有,就显示有多少个这类用户;否则,就显示没有这类用户;

total = `grep "\<bash$" /etc/passwd &> /dev/null | wc -l`
if [ $total -eq 0 ]; then
   echo "no such bash user"
else
   echo "the bash users num is $total"   

2 给定一个文件,比如/etc/inittab
判断这个文件中是否有空白行;
如果有,则显示其空白行数;否则,显示没有空白行。

#!/bin/bash
A=`grep '^$' /etc/inittab | wc -l`
if [ $A -gt 0 ]; then
 echo "$A"
else
 echo "no blank"
fi

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    grep-2.5.4-setup windows操作系统最新版

    为了满足这部分用户的需求,出现了"grep-2.5.4-setup",这是一个专为Windows设计的grep版本,使得在Windows环境下也能享受到类似Linux的grep功能。 grep-2.5.4-setup.exe是这个Windows版本的安装程序,用户可以通过...

    grep-2.20-3.el7.x86_64.rpm

    grep-2.20-3.el7.x86_64.rpm

    grep-2.5.4-setup和gvim80.zip

    标题中的“grep-2.5.4-setup”和“gvim80.zip”指的是两个流行的开源软件工具在Windows平台上的安装程序。`grep`是一款强大的文本搜索工具,源自Unix/Linux系统,而`vim`则是一款高度可配置的文本编辑器,同样起源于...

    ext3grep-0.10.2.zip

    linux下的数据恢复工具 在说一下删除的原理吧。 当硬盘上的一个文件删除,其实没有真正想象中的那样在硬盘上清除掉的,他是把inode号和block块的那个链子 断开,但是真正的数据还是在硬盘上的,有没有感觉在windos上...

    linux-grep-命令-详解.zip

    这个压缩包“linux-grep-命令-详解.zip”包含了一份详细文档“linux-grep-基本用法及高级技巧.doc”,将深入解析grep命令的各个方面。下面,我们将根据文档内容,对grep命令进行详细介绍。 grep,顾名思义,“g/re/...

    开源项目-bettinson-grep-webpage.zip

    开源项目-bettinson-grep-webpage.zip,I'm a complete go beginner and I wrote a simple grep function for web pages in go. How does this look?

    idea grep-console 插件

    grep-console是一款针对JetBrains IDEA系列集成开发环境的强大插件,它极大地增强了控制台输出的查看和分析能力。这款插件的出现,使得开发者在处理大量的日志信息时,能够更高效地定位问题,提高开发效率。 一、...

    grep-3.1-6.el8.x86_64.rpm

    离线安装包,亲测可用

    ext3grep-0.10.1.tar.gz

    利用ext3grep恢复文件时并不依赖特定文本格式。首先ext3grep通过文件系统的root inode(根目录的inode一般为2)来获取当前文件系统下所有文件的信息,包括存在的和已经删除的文件,这些信息包括文件名和inode。然后...

    grep-2.5.4-setup.exe

    grep-2.5.4-setup.exe for windows

    grep用法总法

    8. **反转选择** ```bash grep -v "pattern" file.txt ``` 在 `file.txt` 文件中搜索不包含 "pattern" 的行。 9. **多文件搜索** ```bash grep "pattern" file1.txt file2.txt ``` 在 `file1.txt` 和 `...

    Linux- 系统随你玩之-grep查找文件内容-fyydlz.zip

    本资源“Linux-系统随你玩之-grep查找文件内容-fyydlz.zip”包含了关于如何使用`grep`进行文本搜索的示例文件——fyydlz.txt。 `grep`,全称“Global Regular Expression Print”,顾名思义,它支持正则表达式并...

    Linux查找文件中的字符串命令 grep -nr 'archermind'

    grep "[5-8][6-9][0-3]" myfile 匹配myfile中第一位为5|6|7|8,第二位6|7|8|9,第三位为0|1|2|3的三个字符的行 ;grep "4\{2,4\}" myfile 匹配myfile中含有44,444或44444的行 grep "\?" myfile匹配myfile中含有...

    windows-cmd-linux-grep等命令扩充

    本篇文章将详细探讨如何通过扩充CMD来实现与Linux命令行的兼容性,特别是针对“grep”这一强大的文本搜索工具。 首先,我们要明白,Linux的命令行工具通常不直接在Windows上运行,因为它们是为类Unix系统设计的。...

    文本处理工具三剑客之---grep (正则表达式引擎,正则表达式元字符).md

    ### 文本处理工具三剑客之——grep 在Linux系统管理与开发中,文本处理是一项极为重要的技能。作为文本处理的三大工具之一,`grep`以其强大的文本搜索能力而著称,尤其当它与正则表达式相结合时,能够极大地提高...

    ext3grep-0.10.2.tar.gz

    要使用ext3grep,首先需要下载并解压“ext3grep-0.10.2.tar.gz”这个压缩包。解压后,进入解压后的目录,通过编译和安装过程将其设置到系统路径中。通常,这个过程包括以下步骤: 1. `cd ext3grep-0.10.2` 2. `./...

    前端开源库-fs-grep

    【fs-grep】是一个专为前端开发者设计的开源库,其灵感来源于经典的Linux命令`grep`,用于在文件系统中快速查找包含特定文本内容的文件。这个库将强大的搜索功能带到了前端环境中,使得在浏览器端处理大量文本数据时...

    Linux教程-linux-文本处理-grep.docx

    grep 命令是 Linux 系统中最常用的文本处理工具之一,它可以根据用户指定的模式对目标文本逐行进行匹配检查,并打印匹配到的行。grep 命令的格式为:grep [OPTIONS] PATTERN [FILE...] 其中,OPTIONS 是可选参数,...

    linux grep命令详解

    ### Linux 下 `grep` 命令详解 ...通过以上介绍,我们可以看到 `grep` 命令的强大之处在于其丰富的选项配置,能够满足不同场景下的文本搜索需求。掌握这些选项可以帮助我们更高效地完成文本检索任务。

Global site tag (gtag.js) - Google Analytics