[转帖]Linux-文本处理三剑客grep详解

linux,文本处理,三剑客,grep,详解 · 浏览次数 : 0

小编点评

**grep家族** grep家族是用于在文件中搜索文本的命令行工具,支持不同的正则表达式元字符。主要分為以下幾個命令: * **grep**: 标准 grep 命令,支持基本正则表达式元字符。 * **egrep**: 支持扩展正则表达式元字符,例如 `?`、`*` 和 `\w`。 * **fgrep**: 与 grep 命令相似,但只支持基本正则表达式元字符。 * **ggrep**: 与 grep 命令相似,但支持正则表达式元字符和正则表达式模式。 * **grep -R**: 反向查找,只显示不匹配的行。 * **grep -v**: 反向查找,只显示不匹配的行。 * **grep -i**: 忽略大小写。 * **grep -l**: 显示匹配的行数。 * **grep -c**: 显示匹配的行数。 * **grep -q**: 静默模式,只显示匹配的信息。 * **grep -v**: 静默模式,只显示不匹配的信息。 * **grep -v**: 静默模式,只显示不匹配的信息。 **grep的使用** 使用 grep 命令需要在命令行中运行以下命令: ```bash grep [选项] PATTERN filename... ``` * **选项**: 可以使用不同的选项来指定正则表达式元字符、文件和输出格式。 * **PATTERN**: 要搜索的正则表达式。 * **filename**: 要搜索的文本文件。 **grep 的一些常见选项** * **-i**: 忽略大小写。 * **-l**: 显示匹配的行数。 * **-c**: 显示匹配的行数。 * **-q**: 静默模式,只显示匹配的信息。 * **-v**: 反向查找,只显示不匹配的行。

正文

https://developer.aliyun.com/article/885611?spm=a2c6h.24874632.expert-profile.311.7c46cfe9h5DxWK

 

简介: grep家族 =========================================== grep:在文件中全局查找指定的正则表达式,并打印所有包含该表达的行 egrep:扩展的egrep,支持更多的正则表达式元字符 fgrep:固定grep(fixed grep),有时也被称作快速(fast grep),它按字面结束所有的字符,比如*就是原义,?就是?

文本处理:grep

grep家族

 

===========================================

 

grep:在文件中全局查找指定的正则表达式,并打印所有包含该表达的行

 

egrep:扩展的egrep,支持更多的正则表达式元字符

 

fgrep:固定grep(fixed grep),有时也被称作快速(fast grep),它按字面结束所有的字符,比如*就是原义,?就是?

1.grep命令格式

grep [选项] PATTERN filename filename…

 

[root@localhost my_scripts]# grep ‘jxl’ /etc/passwd;echo $?

 

[root@localhost my_scripts]# grep ‘jxl’ /etc/test;echo $?

 

[root@localhost my_scripts]# grep “bash shell”/etc/test;echo $?

 

找到: grep返回的退出状态为0

 

没找到: grep返回的退出状态为1

 

找不到指定文件: grep返回的退出状态为2

 

grep程序的输入可以来自标准输入或管道,而不仅仅是文件

 

ps aux | grep ‘sshd’ //过滤包含sshd的

 

grep ‘jxl’ /etc/passwd/ etc/shadow /etc/group //在多个文件检索

 

ll | grep ‘^d’ //检索是目录的

2.grep使用的元字符

grep:   使用基本元字符集 ^,$,[],*,.,[],[^],\<\>,\(\),\{\},\+,\|
egrep(或grep -E):使用扩展元字符集?,+,{},(),|
注:grep也可以使用扩展集中的元字符,仅需要对这些元字符前置一个反斜线
\w    所有字母与数字,称为字符'[a-zA-Z0-9]*ve'  'l[\w*ve]'
\W    所有字母与数字之外的字符,称为非字符'love[^a-zA-Z0-9]+'   'love\W+'
\b    词边界   '\<love\>'

3.grep实例

grep -E 或者egrep

egrep 'NW' datafile       //过滤nw的
egrep 'NW' d*         //在开头是d的文件中匹配
egrep '^n' datafile       //匹配n开头的
egrep '4$'  datafile      //以4结尾的行
egrep TB savage datafile    //在saveage datafile中找TB
egrep 'TB savage' datafile    //在datafile中找TB savage
egrep '5\..' datafile   //匹配5再跟一个.在跟一个任意字符的行
egrep '\.5' datafile    //匹配.在跟一个5
egrep '^[we]' datafile    //匹配开头是w或者e行
egrep '[^0-9]' datafile     //不是0-9开头的行
egrep '[A-Z][A-Z][A-Z]' datafile    //匹配A-Z其中一个在跟A-Z其中一个再跟A-Z其中一个
egrep 'ss*' datafile //匹配s出现0次或多次
egrep '[a-z{9}]' datafile   //匹配相同字母出现9次
egrep '\<north' datafile    //匹配以north开头的词
egrep '\<north\>' datafile    //以north开头和结尾的词
egrep '\<[a-r].*n\>' datafile //匹配以a-r再跟任意一个字符出现0次到多次再跟一个n结尾的词
egrep '^n\w*\W' datafile  //匹配一个n开头并且在跟任意字符出现0次到多次再跟特殊字符
egrep '\bnorth\b' datafile  //匹配north开头和结尾的词

egrep 'NW|EA' datafile    //匹配NW和EA的行
egrep '3+' datafile   //匹配3出现一次或多次
egrep '2\.?[0-9]' datafile    //匹配2再跟一个.出现0次或1次再跟0-9任意一个字符的行
egrep '(no)+' datafile    //匹配no出现一次到多次,nononono这种
egrep 's(h|u)' datafile   //匹配sh或者su
egrep 'sh|u' datafile   //匹配sh或u

4.grep选项

-i    忽略大小写
-l    只列出匹配行所在的文件名
-n    在每一行前面加上他在文件中的相对行号
-c    显示成功匹配的行数
-s    禁止显示文件不存在或者文件不可读的错误信息
-q    静默--quiet,--silent不输出匹配的信息
-v    反向查找,只显示不匹配的行
-R    等同于-r 递归针对目录
--color 颜色
-o    只显示匹配的内容不会显示整行,值显示查找的内容,例如查找if结果只有if
-B    匹配行的前几行
-A    匹配行的后几行
-C    匹配行的前后几行

grep -R 'if' *        //递归匹配if
grep  '^[a-Z0-9]' /etc/vsftpd/vsftpd.conf   //过滤字符开头的行
grep -v '^#' /etc/vsftpd/vsftpd.conf
grep -c -v '^#' /etc/vsftpd/vsftpd.conf
grep  -c '^[a-Z0-9]' /etc/vsftpd/vsftpd.conf
grep  -n '^[a-Z0-9]' /etc/vsftpd/vsftpd.conf
grep  -R -l '^[a-Z0-9]'   *
grep --help | grep '\-v'
useradd --help | grep '\-u'
egrep '([0-9]{1,3}.){3}([0-9]{1,3})'  /etc/sysconfig/network-scripts/ifcfg-ens33  //匹配组字符0-9并且出现1次到三次的然后连续匹配3次再跟一个0-9出现一次到三次的
grep '^IPADDR' /etc/sysconfig/network-scripts/ifcfg-ens33 | egrep -o '([0-9]{1,3}.){3}([0-9]{1,3})'
grep -B2 'root' /etc/passwd
grep -A2 'root' /etc/passwd
grep -C2 'root' /etc/passwd

与[转帖]Linux-文本处理三剑客grep详解相似的内容:

[转帖]Linux-文本处理三剑客grep详解

https://developer.aliyun.com/article/885611?spm=a2c6h.24874632.expert-profile.311.7c46cfe9h5DxWK 简介: grep家族 grep:在文件中全局查找指定的正则表达式,并打印所有包含该表达的行 egrep:扩

[转帖] jq命令用法总结

https://www.cnblogs.com/codelogs/p/16324928.html 原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处。 简介# 如果说要给Linux文本三剑客(grep、sed、awk)添加一员的话,我觉得应该是jq命令,因为jq命令是用来处

[转帖]Linux文本处理三剑客之awk学习笔记05:getline用法详解

https://www.cnblogs.com/alongdidi/archive/2021/01/19/awkGetline.html getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据。我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个

[转帖]Linux文本处理三剑客之awk学习笔记05:getline用法详解

https://www.cnblogs.com/alongdidi/p/awkGetline.html getline用法详解 在默认情况下,awk支持从文件或者STDIN中读取数据。我们也可以使用getline来灵活读取数据,例如在main代码块执行过程中读取某个非待处理文件的数据,或者从某个读取

[转帖]Linux-文本处理三剑客awk详解+企业真实案例(变量、正则、条件判断、循环、数组、分析日志)

https://developer.aliyun.com/article/885607?spm=a2c6h.24874632.expert-profile.313.7c46cfe9h5DxWK 简介: 文本处理 awk 1.awk简介 awk是一种编程语言,用于在Linux/unix下对文本和数据进

[转帖]Linux文本处理三剑客sed详解(正则匹配、命令示例)

https://developer.aliyun.com/article/885609?spm=a2c6h.24874632.expert-profile.312.7c46cfe9h5DxWK 简介: sed读一行放到模式空间进行处理 sed是一种在线的、非交互式的编辑器,它一次处理一行内容,处理时

[转帖]Shell三剑客之awk

目录 awk简述awk的工作过程awk的工作原理awk的基本格式及其内置变量getline文本内容匹配过滤打印对字段进行处理打印条件判断打印awk的三元表达式与精准筛选用法awk的精准筛选:awk的分隔符用法指定输出的分隔符awk结合数组运用面试题 awk简述 在 Linux/UNIX 系统中,aw

[转帖]Linux系统awk命令详解

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。 实际上 AWK 的确拥有自己的语言: AWK程序设计语言,三位

【转帖】【奇淫技巧】Linux | 查找文件,无所遁形

theme: channing-cyan 本文正在参与 “走过Linux 三十年”话题征文活动 在Linux系统上,最常见的操作莫过于处理文本。常见文件操作陈列、查找、排序、格式转换、数据流处理等等。这篇文章着眼于文件查找,分析locate和find命令的使用方法,和运用原理以及缺陷不足。 一、导读

[转帖] Linux命令拾遗-文本处理篇

https://www.cnblogs.com/codelogs/p/16060413.html 简介# 这是Linux命令拾遗系列的第二篇,本篇主要介绍Linux中与文本处理相关的命令,如xargs、grep、sed、awk等。 本系列文章索引Linux命令拾遗-入门篇 常用文本相关命令# cat