Linux||正则表达式及grep命令

2021-11-19  本文已影响0人  小汪Waud

以下内容首发自公众号“小汪Waud”。

本期介绍在Linux环境下的正则表达式及grep命令。

1 正则表达式

正则表达式(Regular Expression)是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些字符的特定组合,组成一个“规则字符串”,这个字符串用来表达对字符串的一种过滤逻辑。

正则表达式基本上是一种表示法,只要程序支持这种表示法,该程序就可以用来作为正则表达式的字符串处理之用。如vi、grep、awk、sed等程序支持正则表达式,所以可以使用正则表达式的特殊字符来进行字符串的处理。但例如cp、ls等命令并不支持正则表达式,所以只能用自己的通配符。

需要注意的是,正则表达式与通配符有着本质上的区别。鸟叔的解释是通配符(wildcard)代表的是bash操作接口的一个功能,但正则表达式则是一种字符串处理的表示方式。同时,因为正则表达式是处理字符串的一种表达方式,所以对字符排序有影响的语序数据会对正则表达式的结果有影响。

正则表达式依照不同的严谨度分为:基础正则表达式和扩展正则表达式。

1.1 基础正则表达式

注意!

  1. { }为限定范围的字符,但因为 { 和 } 的符号在shell中是有特殊意义的,因此必须使用转义符" \ "使其失去特殊意义。
  2. *作为通配符时表示0~无限个字符的意思,而作为正则表达式时表示匹配之前项0次或多次。
# 输出任何以a为结尾的文件
ls *a # 通配符
ls | grep '.*a$' # 正则表达式

1.2 扩展正则表达式

2 grep命令

grep是一种强大的文本搜索工具,可以使用正则表达式匹配模式查找文件里符合条件的字符串,并打印出来。

有点类似于WORD里的查找功能。

grep支持三种正则表达式语法:Basic、Extended和perl兼容。如果没有提供正则表达式类型,grep将搜索模式解释为基本的正则表达式。要将模式解释为扩展正则表达式,请使用-E。

查看grep的帮助文档,如下

Usage: grep [OPTION]... PATTERN [FILE]...
Search for PATTERN in each FILE or standard input.
PATTERN is, by default, a basic regular expression (BRE).
Example: grep -i 'hello world' menu.h main.c
参数太长,这里就不放了

基本用法

grep [OPTION]... PATTERN [FILE]...

高级用法

grep [-A] [-B] [--color=auto] "查找字符" [模式] [文件]

常用参数

示例1

首先通过cat命令查看samples.txt的内容,如下图

如果想检索以K为行首的行,通过以下命令即可得到

grep '^K' samples.txt # 注意^在K前面

如果想检索以Z为行尾的行,通过以下命令即可得到

grep 'z$' samples.txt # 注意$在z后面

如果想检索三个字符其中前面为K,后面为D中间字符,为任意字符,通过以下命令即可得到

grep 'K.D' samples.txt

参考资料

  1. 菜鸟教程

https://www.runoob.com/linux/linux-comm-grep.html

  1. 「生信技能树」2021公益课(linux基础 & conda)

https://www.bilibili.com/video/BV1Yy4y117SX?p=12

  1. 鸟哥的Linux私房菜
上一篇下一篇

猜你喜欢

热点阅读