13916729435 发表于 2018-8-28 10:03:05

Linux学习笔记:Shell基础正则表达式

  Shell中经常用到正则表达式的命令包括grep、sed、awk
  用于测试的文件内容
  # vi testfile
  Current Network Status
  Last Updated: Mon Feb 15 10:55:06 CST 2016
  Updated every 90 seconds
  Nagios Core 4.1.1 - www.nagios.org
  Logged in as admin
  I like google
  It's Google, not GOOOOOGLE;
  基础正则表达式里的一些特殊符号
  1)^word    代表以单词word开头的行
  # grep ^I testfile
  I like google
  It's Google, not GOOOOOGLE;
  2)word$    代表以单词word结尾的行
  # grep s$ testfile
  Current Network Status
  Updated every 90 seconds
  3).      点号代表一个任意字符(包括空格)
  # grep t.G testfile
  It's Google, not GOOOOOGLE;
  4)\      斜杠代表转义字符,把所有含有特殊含义的符号都转回它们本身的字符(包括\自身)
  # grep "\." testfile
  Nagios Core 4.1.1 - www.nagios.org
  5)*       代表前一个字符出现任意次数
  # grep "o*g" testfile
  Nagios Core 4.1.1 - www.nagios.org
  Logged in as admin
  I like google
  It's Google, not GOOOOOGLE;
  这个例子中,第一行仅命中g,因为o可以出现任意次数,包括0次
  6).*      匹配所有字符,包括空行。
  # grep ".*" testfile
  Current Network Status
  Last Updated: Mon Feb 15 10:55:06 CST 2016
  Updated every 90 seconds
  Nagios Core 4.1.1 - www.nagios.org
  Logged in as admin
  I like google
  It's Google, not GOOOOOGLE;
  7)[]      匹配中括号里所有字符的任意一个
  # grep "" testfile
  Current Network Status
  Nagios Core 4.1.1 - www.nagios.org
  It's Google, not GOOOOOGLE;
  8)[^CHARS]    CHARS可以是多个字母或者范围,不匹配范围内的任意字符。注意,这是字母,不是单词
  # grep "[^G]oo" testfile
  I like google
  9){n,m}      限制前一个字符出现的次数。使用时需要加\转义
  # grep "o\{2,3\}" testfile   #当仅使用时,尽管限制了2到3次,但所有都出来了。
  I like gooogle
  not gooooooogle
  It's Google, not GOOOOOGLE;
  # grep "go\{2,3\}gle" testfile #当用其他字母夹着来用,则能实现重复出现的次数
  I like gooogle
  还有{n,}和{n},前者代表至少出现n次,后者代表准确出现的次数

页: [1]
查看完整版本: Linux学习笔记:Shell基础正则表达式