您的位置:首页 > 运维架构 > Shell

shell学习(正则表达式)

2012-11-27 14:49 435 查看
正规表示法(或称为常规表示法)是透过一些特殊字符的排列,用以搜寻/取代/删除一列或多列文字字符串, 简单的说,正规表示法就是用在字符串的处理上面的一项『表示式』。正规表示法并不是一个工具程序, 而是一个字符串处理的标准依据,如果您想要以正规表示法的方式处理字符串,就得要使用支持正规表示法的工具程序才行, 这类的工具程序很多,例如 vi, sed, awk 等等。(取自鸟哥的私房菜)

1、grep [-acinv] '搜寻字符串' filename

参数说明:
-a :将 binary 档案以 text 档案的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号

-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!

说明:grep 在数据中查寻一个字符串时,是以 "整行" 为单位来进行数据的撷取的。

例如:

a、在regular_test.txt中查找包含test的记录:grep -n 'test' regular_test.txt

b、用[]来搜寻,其中[]中代表一个字符,如t[ea]st表示test、tast都可以搜到:grep -n 't[ae]st' regular_test.txt;

  [^]表示取反,'^'表示行首,'\.$'表行尾为.的记录:grep -n '\.$' regular_test.txt ,搜寻空白行: grep -n '^$' regular_test.txt ;

  如查询大写英文/小写英文/数字等等, 可以使用[a-z],[A-Z],[0-9]等方式,也可以合并在一起写,如[a-zA-Z0-9]。

c、任意一个字符 . 与重复字符*,“.”表示绝对任何一个字符,“*”表示重复0个或一个以上前面的 RE 字符。

  如查询g开头、d结尾并且中间有两个字符的单词:grep -n 'g..d' regular_test.txt 。

  如查询包含两个或两个以上aa的字符:grep -n 'aaa*' regular_test.txt。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: