linux命令:grep浅谈

简介:


 grep命令简介:

       此个命令根据模式,搜索文本,并将符合模式的文本行显示出来。包含匹配,

     不是完全匹配。也就是说只要某一行有一部分匹配到就显示出来。

    *延伸阅读:模式(pattern)是指文本字符和正则表达式的元字符组合而成匹配条件

1.命令格式:egrep=grep -E  (fgrep快速搜索本文中匹配到的字符行,但是fgrep不支持         正则表达式,其他用法与grep一样。)

grep [OPTIONS] PATTERN [FILE...]

 grep -i 'root' /etc/passwd

2.命令功能:

对文本进行搜索,将符合模式的文本行显示出来。

3.命令参数:

  -i 查找时忽略大小写

 --color 模式中关键字以高亮有颜色显示出来

 -v 显示没有被模式匹配的选项

 -o 只显示被模式匹配的字符串

 -E 使用扩展正则表达式

 -A # 表示显示被模式匹配到的行,并显示后#行  #指具体数字 -A after后面的

 -B # 表示显示被模式匹配到的行,并显示前#行  #指具体数字 -B before前面的

 -C # 表示显示被模式匹配到的行,并显示前后各#行 #指具体数字

支持正则表达式:

  .:匹配任意单个字符

  *:匹配其前面的字符任意次(包括0次)

  .*:匹配任意长度的任意字符

  []:匹配指定范围内的任意单个字符

  [^]:匹配指定范围外的任意单个字符

  [:digit:]数字  [:lower:]小写字母  [:upper:]大写字母  [:punct:]字符/符号  

  [:space:]空格  [:alpha:]所有字母  [:alnum:]所有字母和数字  

   \?:匹配其前面的字符0次或1次  \表示转义

   \{m,n\}:匹配前面的字符至少m次,最多n次

   \{m,\}:匹配前面的字符至少m次

   \{0,n}:匹配前面的字符,最多n次

    \{n}:匹配前面的字符n次

支持扩展正则表达式:-E选项  grep -E = egrep 扩展正则表达式

  | : 或者表示符  比如a|bc|ca  表示a或者bc或者ca

  .:匹配任意单个字符

  []:匹配指定范围内的任意单个字符

  [^]:匹配指定范围外的任意单个字符

      *:匹配其前面的字符任意次(包括0次)

  ?:匹配其前面的字符0次或者1次

   +:匹配其前面的字符至少1次(相当于正则表达式中\{1,\})

  {m,n}: 直接使用大括号不用使用转移符\,表示至少m次,最多n次

   {n}:匹配前面的字符n次

位置锚定:(正则表达式和扩展正则表达式一样)

^: 锚定行首,此字符后面的任意内容必须出现在行首

$: 锚定行尾,此字符前面的任意内容必须出现在行尾

^$: 空白行

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

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

正则表达式分组符号:(扩展正则表达式不用转义符直接为())

\(\)把括号内的当着一个整体

       \(ab\)把ab当着一个整体

 后向引用(扩展正则表达式一样)

       \1: 引用第一个左括号以及与之对应的右括号所包括的所有内容

       \2:引用第二个左括号以及与之对应的右括号所包括的所有内容

       \3:引用第三个左括号以及与之对应的右括号所包括的所有内容

      \n:引用第n个左括号以及与之对应的右括号所包括的所有内容

4.命令实例:

  1、查找包含某些字符的所有行

    grep "root" /etc/passwd

[root@xuelinux ~]#  grep "root" /etc/passwd

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

2、grep --color 以高亮显示查找到的字符

可以把别名写入配置文档 vim ~/.bashrc1

# .bashrc

   # User specific aliases and functions 

    alias rm='rm -i'

    alias cp='cp -i'

    alias mv='mv -i'

    alias grep='grep --color'

  3、grep '\([0-9]\).*\1$' /test/test1.txt 查找test1.txt文档中必须以前面第一个数字结尾的行

[root@xuelinux test]# grep '\([0-9]\).*\1$' /test/test1.txt 

2who are you 2

4 youareringt4

5,he is 2tom2

7 eg is over 11

8 thanks you 1and1

[root@xuelinux test]# cat test1.txt 

1,this is helloword!  此处没有以数字结尾

2who are you 2   此处匹配到

3,no 4 is not 2.  此处结尾是以.结尾所以未匹配到

4 youareringt4.   此处结尾是以.结尾所以未匹配到

4 youareringt4   此处匹配到,是以前面出现的数字4结尾

5,he is 2tom2   此处匹配到,是以前面出现的数字2结尾

5,he is 2tom2.   此处结尾是以.结尾所以未匹配到

6 tom is cat4,yes is 4. 此处结尾是以.结尾所以未匹配到

7 eg is over 11.  此处结尾是以.结尾所以未匹配到

7 eg is over 11  此处匹配到,是以前面出现的数字1结尾

8 thanks you 1and1  此处匹配到,是以前面出现的数字1结尾

8、取出本机表示ip地址的相关字符

ifconfig | egrep --color'(\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.){3}\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' 

  egrep = grep -E (){3}表示前面括号里面的内容重复3次













本文转自wang650108151CTO博客,原文链接:http://blog.51cto.com/woyaoxuelinux/1862832 ,如需转载请自行联系原作者


相关文章
|
23天前
|
Linux 数据安全/隐私保护 Windows
命令方式:window向linux传文件
【10月更文挑战第6天】本文介绍了如何在Linux系统中通过命令`ip a`获取IP地址,并在Windows系统下使用CMD命令行工具和SCP命令实现文件传输。示例展示了如何将D盘中的`mm.jar`文件上传至IP地址为192.168.163.122的Linux系统的/up/目录下,最后在Linux系统中确认文件传输结果。
212 65
|
11天前
|
运维 安全 Linux
Linux中传输文件文件夹的10个scp命令
【10月更文挑战第18天】本文详细介绍了10种利用scp命令在Linux系统中进行文件传输的方法,涵盖基础文件传输、使用密钥认证、复制整个目录、从远程主机复制文件、同时传输多个文件和目录、保持文件权限、跨多台远程主机传输、指定端口及显示传输进度等场景,旨在帮助用户在不同情况下高效安全地完成文件传输任务。
100 5
|
11天前
|
Linux
Linux系统之expr命令的基本使用
【10月更文挑战第18天】Linux系统之expr命令的基本使用
42 4
|
1天前
|
Linux Shell 数据安全/隐私保护
|
2天前
|
域名解析 网络协议 安全
|
9天前
|
监控 Linux Shell
|
8天前
|
运维 监控 网络协议
|
12天前
|
Unix Linux
Linux | Rsync 命令:16 个实际示例(下)
Linux | Rsync 命令:16 个实际示例(下)
25 3
Linux | Rsync 命令:16 个实际示例(下)
|
15天前
|
安全 Linux
Linux系统之lsof命令的基本使用
【10月更文挑战第14天】Linux系统之lsof命令的基本使用
71 2
Linux系统之lsof命令的基本使用
|
23天前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
52 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】