- N +

Linux基础知识:grep及正则表达式

Linux日常运维中经常会用到grep和正则表达式,根据不同的目的选择合适的参数以及表示方法,能起到提高效率的作用。

文本查找的需要:
grep,egrep,fgrep

grep:  Glocal Rsearch  根据模式,搜索文本,并将符合模式的文本行显示出来
Pattern:文本字符和正则表达式的元字符组合而成匹配条件

grep [options] PATTEN [FILE...]
      -i 忽略大小写
      --color 高亮显示匹配到的字符串
      -v 显示没有被模式匹配到的行
      -o 只显示被模式匹配到的字符串
     
例如:#grep --color -i 'root' /etc/passwd

*:任意长度的任意字符
?:  任意单个字符
[],[^]

正则表达式:Regular EXPression, REGEXP 
元字符:
.  :任意单个字符
[]:匹配指定范围内的任意单个字符
[^] :  匹配指定范围外的任意单个字符
         字符集合:[:digit:], [:lower:], [:upper:], [:punct:], [:space:], [:alpha:], [:alnum:]
                           数字      小写字母 大写字母 标点符号    空格     所有字母  所有字母和数字
                           例如:以所有数字结尾的行       #grep '[[:digit:]]$' /etc/inittab
匹配次数(贪婪模式,尽可能长的匹配):
* : 匹配其前面的字符任意次
       a,b,ab,aab,acb,adb,amnb
       a*b
       a.*b
.* :   任意长度的任意字符
\? :匹配其前面的字符1次或0次
\{m,n\} : 匹配之前的字符,至少m次,至多n次
        例如: \{1,\} 至少一次
                   \{0,3\} 最多3次

位置锚定:
^: 锚定行首,此字符后面的任意内容必须出现在行首
例如:#grep '^r..t' /etc/passwd
$: 锚定行尾 ,此字符前面的任意内容必须出现在行尾
^$ :  空白行

\< : 锚定词首,其后面的任意字符必须作为单词首部出现
\>  :   锚定词尾,其前面的任意字符必须作为单词尾部出现

\<root\> 只查找单词root
 
分组:
\(\)
      例如:\(ab\)*    这样*匹配的是ab这一个整体
                 后向引用
                 \1 : 引用第一个左括号以及与之对应的右括号所包含的所有内容
                 \2 : 引用第二个左括号以及与之对应的右括号所包含的所有内容
                 例如:grep '\(l.*e\).*\1r' test2   列出包含l开头e结尾,且后面又出现了一次的字符串 
返回列表
上一篇:LINUX基础知识:Linux根文件系统
下一篇:Linux基础知识:文件查找
留言与评论(共有 0 条评论)
   
验证码: