第二天 linux 过滤,正则表达式

1、过滤文本内容 ---- grep

1.作用
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expr

ession Print,表示全局正则表达式版本,它的使用权限是所有用户。

2.格式
grep [options]

3.主要参数
[options]主要参数:
-c:只输出匹配行的计数。
-i:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
\<:从匹配正则表达 式的行开始。
\>:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。
* :有字符,长度可以为0。

选项说明:

      • –color=auto:对匹配到的文本着色,高亮显示
      • -E:表示支持使用扩展的正则表达式,等同于egrep
      • -q:静默模式,不输出任何信息到标准输出
      • -A(after):显示匹配到的行和其后面的行,给一个数字
        • grep -A 1 root /etc/passwd
      • -B(before):显示匹配到的行和其前面的行,给一个数字
        • grep -B 1 root /etc/passwd
      • -C(center):显示匹配到的行和其前后的行,给一个数字
        • grep -C 1 root /etc/passwd

正则表达式Regex    
 
匹配单个字符的元字符  
    
1) .    任意单个字符
 
[[email protected] ~]# grep "r..t" /etc/passwd
 
2) [a1b]    方括号任意一个字符        
 
[[email protected] ~]# "grep r[abc]t" /etc/passwd
 
-    连续的字符范围  
 
    [a-z]    [A-Z]     [a-zA-Z]    [0-9]    [a-zA-Z0-9]
 
^    取反
 
    [^a-z]
 
[[email protected] ~]# grep "a[^a-z]t" /tmp/1.txt  
 
 
3) 特殊字符集  
 
    [[:digit:]]            任意单个数字  
    [[:alpha:]]            任意单个字母
    [[:upper:]]            任意单个大写字母
    [[:lower:]]            任意单个小写字母
    [[:alnum:]]            任意单个数字、字母
    [[:space:]]            任意单个空白字符
    [[:punct:]]            任意单个标点
 
[[email protected] ~]# grep "a[[:upper:]]t" /tmp/1.txt
    
    
    
匹配字符出现的位置
 
^string            以string开头
 
[[email protected] ~]# grep "^root" /etc/passwd  
 
[[email protected] ~]# grep "^[A-Z]" /tmp/1.txt
 
[[email protected] ~]# grep "^[^A-Z]" /tmp/1.txt
 
 
string$            以string结尾
 
[[email protected] ~]# grep "bash$" /etc/passwd
 
 
^$        空行  
 
[[email protected] ~]# grep "^$" /etc/fstab | wc -l
 
 |  管道    
    作用:把前面输出的结果当做后面命令的条件  
 
匹配字符出现的次数  
 
*        前一个字符出现任意次        ab*        
 
[[email protected] ~]# grep "ab*" /tmp/2.txt
 
\?        前一个字符出现0次或者1次    可有可无      
 
[[email protected] ~]# grep "ab\?" /tmp/2.txt
 
\+        前一个字符出现1次或者多次     
 
[[email protected] ~]# grep "ab\+" /tmp/2.txt
 
 
\{4\}    前一个字符精确出现4次
 
[[email protected] ~]# grep "ab\{3\}" /tmp/2.txt
 
{2,4},   {2,}
 
[[email protected] ~]# grep "ab\{2,4\}" /tmp/2.txt
 
[[email protected] ~]# grep "ab\{2,\}" /tmp/2.txt
 
 
分组    \(ab\)
 
[[email protected] ~]# grep "\(ab\)\{2,\}" /usr/share/dict/words  
 
 
option选项:
 
-i        忽略大小写  
 
[[email protected] ~]# grep -i "^r" /tmp/1.txt
 
 
-o         仅显示符合PATTERN的内容
 
[[email protected] ~]# grep -o "r..t" /etc/passwd
 
 
-e         同时根据多个条件过滤内容  
 
[[email protected] ~]# grep -e "^#" -e "^$" /etc/fstab
 
 
-v        反向过滤  
 
[[email protected] ~]# grep -v "^#" /etc/fstab  
 
[[email protected] ~]# grep -v -e "^#" -e "^$" /etc/fstab  
 
 
-E        支持扩展正则表达式  
 
[[email protected] ~]# grep -E "(ab){2,}" /usr/share/dict/words  
 
[[email protected] ~]# grep -E "bin|sbin" /etc/passwd
 
 
-A n     显示符合条件的后n行内容
 
[[email protected] ~]# ifconfig eth0 | grep -A 1 "broadcast"                >>>查看eth0网卡的IP地址信息  
        inet 192.168.122.105  netmask 255.255.255.0  broadcast 192.168.122.255
        inet6 fe80::5054:ff:fe71:3b1c  prefixlen 64  scopeid 0x20<link>
 
 
-B n     显示符合条件的前n行内容
 
[[email protected] ~]# ip addr show eth0 | grep -B 1 "global"                >>>查看网卡的IP地址及MAC地址
    link/ether 52:54:00:71:3b:1c brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.105/24 brd 192.168.122.255 scope global dynamic eth0

通配符

    • *:匹配任意长度的任意字符,可以一个都没有
    • ?:匹配任意单个字符,必须有一个
    • [ ]:匹配指定范围内的单个字符
    • [^]:匹配指定范围外的任意当个字符
      • [^[0-9]]或[^0-9]:表示匹配数字外的任意字符
      • [^[:upper:]]:表示匹配大写字母外的任意字符
      • pa[0-9]: pa后面匹配一个数字
      • [a-z], [A-Z] [0-9] [a-z0-9] [abdxy]
      • pa[0-9]: pa后面匹配一个数字
      • pa[0-9][0-9]: pa后面匹配两个数字
      • [[:upper:]]:表示所有大写字母
      • [[:lower:]]:表示所有小写字母
      • [[:alpha:]]:表示所有字母
      • [[:digit:]]:表示所有数字
      • [[:alnum:]]:表示所有的字母和数字
      • [[:space:]]:表示所有的空白字符
      • [[:punct:]]:表示所有的标点符号
      • 坚持养成习惯,完全不是自己总结的东西,只想有个笔记。
时间: 2024-10-10 05:16:53

第二天 linux 过滤,正则表达式的相关文章

Linux shell 正则表达式用法

1.“ \  ” 用法 用于关闭其后续字符的特殊含义,恢复字符的本身含义,如:\\ 表示字符 \ 2. “ . " 用法 匹配任意单个字符 3. " * " 用法 匹配任意字符,可以是单个,也可以是多个,和 ”.“ 字符的去吧是是否可以匹配多个任意字符 4. "^" 的用法 在行的起始处开始匹配紧接着的字符,如 ^6,匹配行的首字符为6的行. 5." $ " 的用法 和 “^” 用法相似,表示在行的结尾处开始匹配字符,如 6$,匹配行的

linux中正则表达式的使用方法

大家好,欢迎你们来到我的博客,作为一个博客新手,这是我第一次发帖子,希望接下来的时间我们能够在linux的学习中互帮互助,共同进步! 好了,废话不多说,回归正题,今天我将要介绍的是非常强大的文本搜索工具--grep. grep的全称为:Globel Search Regular Expression and Printing out the line(全局搜索正则表达式并把行打印出来).它最重要的功能根据用户指定的文本模式(搜索条件)对目标文件进行逐行搜索,然后将符合要求的字符串打印出来,但必须

Linux Basics 正则表达式 grep

grep全称是:Global search Regular Expression and Printing全局搜索正则表达式并显示出来 使用正则表达式来描述选择条件. 取行选择:选取行的筛选条件,给定选取条件,只显示符合条件的行,或者只显示不符合条件的行. 对于类似的操作有三个命令:grep; egrep; fgrep grep:默认支持基本正则表达式: egrep:扩展正则表达式: fgrep:不支持正则表达式元字符,搜索字符串的速度快: 正则表达式是一类字符所书写的模式(pattern)  

linux之正则表达式

文件查找的需要: grep:(GLOBAL Research) 根据模式(网)去搜索文本,而后将符合模式的文本行显示出来. [部分匹配,显示时显示一行] Pattern:模式.(文本字符以及正则表达式元字符组合而成的匹配条件) 例子:grep  'root' /etc/passwd grep所支持的选项: -i:忽略大小写 --color 显示颜色 alias grep='grep --color' -v: 反向查找,显示没有被模式匹配的行 -o:只显示被模式匹配出来的字符串,每个字符串显示为一

第二天linux基础知识

第二天linux基础知识 1:终端(用户与主机交互必然用到的设备) 物理终端:直接接入本机的设备 虚拟终端:以软件的方法虚拟实现的终端. 图形终端:属于虚拟终端 模拟终端:图形打开的命令行或基于远程登录协议打开的终端. 查看当前终端设备命令:tty 2:交互式接口(启动终端后,在终端附加的一个交互式程序) GUI:Graphic User Interface CLI:Command Line Interface 3:SHELL(shell是linux系统的用户界面,提供了用户与内核进行交互操作的

第二章 Linux文件系统和文本编辑器

用户分为三类: 1.root用户 2.虚拟用户:不具有登录系统的能力,一般系统自身拥有,比如bin,daemon,ftp,mail 3.普通用户 useradd: -g:指定用户私有组 -G:添加附加组 -d:指定用户家目录,如果不存在可以结合-m创建 -m:如果家目录不存在则自动创建 -u:指定UID,和-o一起可以重复使用其他用户的UID,必须>=100 注意useradd的用户没有密码还不能登录 usermod:修改用户账号 -d[directory]:改变用户登录时的目录,注意不是改变家

linux学习---正则表达式与grep

正则表达式(Regular Expression(RE)) 是透过一些特殊字符的排列, 用以"搜寻/取代/删除"一列或多列文字字符串, 简单的说, 正则表达式就是用在字符串的处理上面的一项"表达式". 正则表达式并不是一个工具程序, 而是一个字符串处理的标准依据, 如果想要用用正则表达式处理字符串, 就要使用支持正则表达式的工具程序, 这样的程序有很多, 如vi, awk, grep, sed... grep 基本规则: grep [-acinv] [--color

第二周Linux重点内容

第4天3A认证 授权 审计authentication authorization accouting aduition root :管理员Linux 组: groupname gid 管理员组 root other Linux安全上下文进程(process) 进程访问资源的权限取决于运行者的身份管理员 (root) /bin/cat (所有用户都能使用) /root/.bashrc判断:1使用工具 2 使用文件 [[email protected] ~]#ll /bin/cat-rwxr-xr

第二讲:第二课Linux操作系统及常用命令

第二讲:第二课Linux操作系统及常用命令1.date-显示系统时间修改时间2.liunx记时模式:晶体振荡器,高级的每万年误差一秒.主机上就是晶体振荡器纪时的.晶体振荡器要供电才行,主板上有纽扣电池.主板上的时间叫RTC,real time clockntp(network time protocl):网络时间协议linux:系统启动时读取RTC(硬件时钟 ),读取成功后不在使用RTC时间,系统内核自身通过软件方式模拟振荡器在系统内部模拟时间,建立系统时钟.date 显示系统时间clock 显