linux常用正则命令 linux shell 正则表达式( 二 )


提示: -m10仅在文件的前10行中过滤,后面的行不再过滤 。
结合 -c 选项输出匹配的行数
使用 -c 选项可输出匹配行数,这与通过管道再 wc -l的效果是相同的 , 但是写法更简便 。比如,统计使用“/bin/bash”作为登录Shell的正常用户个数,可执行:
或者
4)基本元字符 . —— 匹配任意单个字符
以/etc/rc.local文件为例 , 确认文本内容:
输出/etc/rc.local文件内的空行(用 –v 选项将条件取反):
5)基本元字符 +、?、—— 目标出现的次数*
还以/etc/rc.local文件为例:
输出包括 f、ff、ff、……的行,即“f”至少出现一次:
输出包括init、initial的行,即末尾的“ial”最多出现一次(可能没有):
输出包括stu、stuf、stuff、stufff、……的行,即末尾的“f”可出现任意多次,也可以没有 。重复目标只有一个字符时 , 可以不使用括号:
输出所有行,单独的“.*”可匹配任意行(包括空行):
输出/etc/passwd文件内“r”开头且以“nologin”结尾的用户记录,即中间可以是任意字符:
6)元字符 {} —— 限定出现的次数范围
创建一个练习用的测试文件:
输出包括ababab的行,即“ab”连续出现3次:
输出包括abab、ababab、abababab的行 , 即“ab”连续出现2~4次:
输出包括ababab、abababab、……的行,即“ab”最少连续出现3次:
7)元字符 [] —— 匹配范围内的单个字符
还以前面的测试文件bracet.txt为例:
输出包括abc、abd的行,即前两个字符为“ab”,第三个字符只要是c、d中的一个就符合条件:
输出包括大写字母的行,使用[A-Z]匹配连续范围:
8)单词边界匹配
以文件/etc/rc.local为例:
输出包括单词“init”的行 , 文件中“initialization”不合要求:
或者:
输出包括以“ll”结尾的单词的行,使用匹配单词右边界:
或者:
9)多个条件的组合
通过dmesg启动日志查看蓝牙设备、网卡设备相关的信息:
Linux正则表达式教程:Grep Regex示例 正则表达式是特殊字符,可帮助搜索数据 , 匹配复杂模式 。正则表达式缩写为“regexp”或“regex” 。
为了便于理解,让我们逐一学习不同类型的正则表达式 。
[TOC]
一些常用的正则表达式命令是tr,sed,vi和grep 。下面列出了一些基本的正则表达式 。
我们来看一个例子吧 。
执行cat示例以查看现有文件的内容
搜索包含字母'a'的内容 。
'^'匹配字符串的开头 。让我们搜索一下STARTS的内容
仅过滤以字符开头的行 。将忽略开头不包含字符“a”的行 。
让我们看看另一个例子 -
仅选择那些以 $ 结尾的行
这些表达式告诉我们字符串中字符的出现次数 。他们是
例:
过滤掉包含字符'p'的所有行
我们想要检查字符'p'是否在字符串中依次出现2次 。为此,语法将是:
注意:您需要使用这些正则表达式添加-E 。
这些正则表达式包含多个表达式的组合 。他们之中有一些是:
例:
搜索所有字符't'
假设我们要过滤字符'a'在字符't'之前的行
我们可以使用命令
大括号扩展的语法是花括号“{}”内的序列或逗号分隔的项目列表 。序列中的起始和结束项由两个句点“..”分隔 。
一些例子:
在上面的示例中,echo命令使用大括号扩展创建字符串 。
Linux||正则表达式及grep命令 以下内容首发自公众号“小汪Waud” 。
本期介绍在Linux环境下的正则表达式及grep命令 。

推荐阅读