加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式和文本搜索工具grep

发布时间:2020-12-13 23:06:34 所属栏目:百科 来源:网络整理
导读:正则表达式 是由字面文本和具有特殊意义的符号组成的。我们可以根据具体需求,使用它们构造出合适的正则表达式来匹配文本。它是一种匹配文本的通用语言。正则表达式是模式匹配技术的核心,借助合适的正则表达式,可以生成我们所需的各类输出结果,例如过滤、

正则表达式是由字面文本和具有特殊意义的符号组成的。我们可以根据具体需求,使用它们构造出合适的正则表达式来匹配文本。它是一种匹配文本的通用语言。正则表达式是模式匹配技术的核心,借助合适的正则表达式,可以生成我们所需的各类输出结果,例如过滤、剥离、替换、搜索等。


正则表达式的基本组成部分

^ #行起始标记(使用cat -a显示空格,行首,行尾等标记。)
  #示例 ^It 匹配以It起始的行
$ #行尾标记                                          
  #示例 It$ 匹配以It结尾的行
. #匹配任意一个字符
   #示例:Hack.匹配Hackl和Hacki,但是不能匹配Hackl2和Hackil,它只能匹配单个字符
[] #匹配包含在[字符]之中的任意一个字符
   #示例:coo[kl] 匹配cook 或 cool
[^] #匹配除[^字符]之外的任意一个字符
   #示例:9[^01] 匹配92 、93,但不匹配91或90
[-] #匹配[]中指定范围内的任意一个字符
   #示例 [1-5]匹配1至5的任意一个数字,[a-z]匹配a到z之间的任意一个字母
?  #匹配之前的项一次或零次
   #示例:colou?r匹配color或colour 但不能匹配colouur
+  #匹配之前项一次或多次
   #Rollo-9+匹配Rollo-99、Rollo-9但不匹配Rollo-
*  #匹配之前项0次或多次
   #示例:co*l 匹配cl、col、cool等
() #创建一个用于匹配的子串
   #示例:ma(tar)?x匹配max或matarx
{n} #匹配之前的项n次
    #[0-9]{3}匹配任意一个三位数,可扩展为[0-9][0-9][0-9]
{n,} #匹配之前项至少n次
     #示例:[0-9]{2,}匹配任意一个两位或更多数字
{n,m} #之前的项匹配至少n次,最多匹配m次
|     #匹配左边项或右边项
      #示例:Oct(1st|2nd)匹配Oct 1st或Oct 2nd
    #转义符



grep是使用正则表达式来进行文本模式匹配的文本搜索工具。

(1)搜索包含特定模式的文本行

grep pattern filename filename #可同时搜索多个文件
echo "this a word"|grep word #或从stdin中读取


(2)用--color选项在输出行中着重标记匹配到的单词

grep word filename --color=auto


(3)grep只解释模式中的某些特殊字符。如果要使用完整的正则表达式,需要使用egrep或加-E选项使用扩展正则表达式。

grep "[a-z]+" filename


(4)-o 只输出匹配到的文本部分

(5)-v打印匹配到的行之外的文本

(6)-c打印匹配到的行,非匹配次数

(7)-n打印包含匹配字串的行号

(8)-e匹配多个模式1

grep -e "pattern1" -e "pattern2"

(9)-f 指定匹配样式文本,每行一个匹配样式

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读