shell编程基础-正则表达式

正则表达式

匹配包含的文本字符串(正则是包含的关系,只要包含就匹配)

  • 基础正则表达式:通过grep加载
  • 扩展正则表达式:通过egrep或者grep -E

grep -v 取反

基础正则表达式

  • n* (星号):匹配包含前一个字符的n匹配0次或者任意多次(如果星号前面就一个字符那匹配0次就代表匹配全部,文本的全部)
  • .(点):匹配包含任意一个字符(换行符除外)
  • ^ :匹配首行
  • $:匹配末行
  • [ ](中括号):匹配包含中括号中的任意一个字符,范围用 1-9(一横)
  • [^ ] (中括号内+尖角号):取反,区别于中括号外+尖角号 ^ [ ]
  • \ :取消特殊字符的含义,变成普通字符
  • {n}:前面字符出现的n次
  • {n,}:前面字符出现大于等于n次
  • {n,m}:前面字符出现大于n次,小于m次

使用grep -E的时候最后三个\ 不要加反斜号{n,m}

扩展正则表达式

  • +:前一个符号匹配1次或者多次
  • ?:前一个符号匹配0次或者1次
  • | :或的关系
  • ():代表一个整体字符

练习题:

1、显示/proc/meminfo文件中以大写S和A开头的行

egrep "^(A|S)" /proc/meminfo

2、显示/etc/passwd文件中不以/bin/bash结尾的行

grep -v "/bin/bash$" /etc/passwd

3、显示/etc/passwd文件中s开头的4位用户

grep "^s...:" /etc/passwd

4、显示/etc/passwd文件中有空格的行(不区分大小写)

grep -i "[0-9a-z] [0-9a-z]" /etc/passwd

5、显示/etc/passwd文件中空白行

grep "^$" /etc/passwd

6、显示/etc/passwd文件中的两位数或三位数

egrep "[0-9]{2,3}" /etc/passwd

猜你喜欢

转载自blog.csdn.net/yangshihuz/article/details/110946451
今日推荐