美文网首页shell
【现学现忘&Shell编程】— 27.基础正则表达式练习(二)

【现学现忘&Shell编程】— 27.基础正则表达式练习(二)

作者: 繁华似锦Fighting | 来源:发表于2020-10-15 00:08 被阅读0次

(3)"."练习

正则表达式.匹配除了换行符外任意一个字符。

举个例子:

文本test2.txt内容如下:

abc adapt 适应 xyz
abc adopt 采用 xyz
xyz adept 内行 abc
xyz floor 地板 abc
xyz flour 面粉 abc
  • 匹配在d和t这两个字母之间一定有两个字符的单词
    执行命令:grep "d..t" test2.txt

  • 结合*使用
    执行命令:grep "z.*a" test2.txt


    配置的是a和z两个字母之间有任何字符的内容。
  • 如果想匹配所有内容,标准写法为.*
    执行命令:grep ".*" test2.txt

(4)"^"和"$"练习

正则表达式"^"匹配行首,"$"匹配行尾。

文本test2.txt内容如下:

abc adapt 适应 xyz
abc adopt 采用 xyz

xyz adept 内行 abc.
xyz floor 地板 abc
xyz flour 面粉 abc
  • ^代表匹配行首,比如^a会匹配以小写a开头的行:
    执行命令:grep "^a" test2.txt

  • $代表匹配行尾,如果c$会匹配以小写c结尾的行:
    执行命令:grep "c$" test2.txt

  • ^$则会匹配空白行:
    执行命令:grep "^$" test2.txt


    在实际的应用中,我们很少这样使用,一般使用grep命令的-v选项进行取反,来过滤掉空白行。(标准方式)
    执行命令:grep -v "^$" test2.txt
  • $结合.使用
    如果我们要匹配以句号.结果的行,那是否用.$来进行匹配呢?
    我们先来执行一下命令:rep ".$" test2.txt

    我们看到是匹配了任意字符结尾的行,只是过滤的空白行。
    也就是说正则表达式.$中的.是正则符号的意思,表示匹配除了换行符外任意一个字符。
    如果我们想匹配以句号.结束的行,我们需要在.前加入转义符,把.变成普通字符串,如:\.$
    执行命令:grep "\.$" test2.txt

说明:
在使用"^"匹配行首,"$"匹配行尾的时候,如果使用的是特殊符号开头或者结尾,我们需要使用转义符进行转义,再进行匹配。

(5)"[ ]"练习

正则表达式"[ ]"匹配中括号中指定的任意一个字符,只匹配一个字符。(注意只能匹配一个字符。)
比如[abc]要么会匹配一个a字符,要么会匹配一个b字符,或者要么会匹配一个c字符。

文本test.txt

abc adapt 适应 abc
ABC adopt 采用 xyz

abc adept 内行 XYZ
123 floor 地板 ABC
123 flour 面粉 123
  • 配置adapt、adopt、adept这三个近似的单词
    执行命令:grep "ad[ae]pt" test2.txt


    可以看出[].的匹配范围更精准,请根据实际情况,按需使用。
  • [0-9]会匹配任意一个数字
    执行命令:grep "[0-9]" test2.txt

  • [A-Z]会匹配一个大写字母
    执行命令:grep "[A-Z]" test2.txt
  • ^[a-z]代表匹配用小写字母开头的行
    执行命令:grep "^[a-z]" test2.txt

(6)"[^]"练习

正则表达式[^]匹配除中括号的字符以外的任意一个字符。

就相当于在[]中的内容进行取反。

文本test.txt

abc adapt 适应 abc
ABC adopt 采用 xyz

abc adept 内行 XYZ
123 floor 地板 ABC
123 flour 面粉 123
  • 不匹配数字
    执行命令:grep "[^0-9]" test2.txt

  • 不匹配以数字开头的行
    执行命令:grep "^[^0-9]" test2.txt

  • 不匹配英文
    执行命令:rep "[^a-zA-Z]" test2.txt

  • 匹配不以英文结尾的行
    执行命令:rep "[^a-zA-Z]$" test2.txt

相关文章

网友评论

    本文标题:【现学现忘&Shell编程】— 27.基础正则表达式练习(二)

    本文链接:https://www.haomeiwen.com/subject/okdgpktx.html