awk、sed、grep三大shell文本处理工具之grep的应用

1.基本格式
grep pattern [file...]
(1)grep 搜索字符串 [filename]
(2)grep 正则表达式 [filename]
在文件中搜索所有 pattern 出现的位置, pattern 既可以是要搜索的字符串,也可以是一个正则表达式.
注意:在输入要搜索的字符串时最好使用双引号/而在模式匹配使用正则表达式时,注意使用单引号

2.grep的选项
    -c   只输出匹配行的计数
    -i    不区分大小写(用于单字符)
    -n   显示匹配的行号
    -v   显示不包含匹配文本的所有行
    -s   不显示错误信息

    -o   只输出匹配字符串
    -E   使用扩展正则表达式

 -w   字符串精确匹配

    更多的选项请查看:man grep

例:

[root@xx tmp]# cat e.txt |grep danny
danny123
danny
danny1
danny
[root@xx tmp]# cat e.txt |grep -i danny
danny123
danny
danny1
Danny
Danny213
danny
[root@xx tmp]# cat e.txt |grep -w danny
danny
danny

3.常用grep实例

(1)多个文件查询
    grep "sort" *.doc       #见文件名的匹配

(2)行匹配:输出匹配行的计数
    grep -c "48" data.doc   #输出文档中含有48字符的行数

(3)显示匹配行和行数
    grep -n "48" data.doc       #显示所有匹配48的行和行号

(4)显示非匹配的行
    grep -vn "48" data.doc      #输出所有不包含48的行

(5)大小写敏感
    grep -i "ab" data.doc       #输出所有含有ab或Ab的字符串的行

4, 正则表达式的应用

(1)正则表达式的应用 (注意:最好把正则表达式用单引号括起来)
    grep '[239].' data.doc      #输出所有含有以2,3或9开头的,并且是两个数字的行

(2)不匹配测试
    grep '^[^48]' data.doc      #不匹配行首是48的行

(3)使用扩展模式匹配
    grep -E '219|216' data.doc

5, 使用类名
可以使用国际模式匹配的类名:
[[:upper:]]   [A-Z]
[[:lower:]]   [a-z]
[[:digit:]]   [0-9]
[[:alnum:]]   [0-9a-zA-Z]
[[:space:]]   空格或tab
[[:alpha:]]   [a-zA-Z]

原文地址:https://www.cnblogs.com/dannylinux/p/8183164.html