06.Linux命令之grep命令
1、grep是什么?
grep是一个文本过滤器,作用是在文件中查找符合我们要求的内容。
2、命令格式
形式一,从指定的文件中找出匹配pattern的行:
grep [option] pattern [file1,file2,...]
形式二,从管道中找出匹配pattern的行:
cmd | grep [option] pattern
说明:pattern是由正则表达式字符及文本字符所编写的过滤条件。
3、常见选项
选项 | 含义 |
---|---|
-v | 在指定文本反向搜索指定内容,打印不包含指定内容的行 |
-i | 在指定文本搜索以指定内容结束的行,指定内容不区分大小写 |
-n | 在指定文本搜索指定内容,若找到,则返回内容行及行号。 |
-r | 递归搜索 |
-E | 支持扩展正则表达式 |
-F | 不按正则表达式匹配,按字符串的字面意思匹配 |
-c | 只输出匹配行的数量,不显示具体内容 |
-o | 只显示模式匹配的字符串 |
4、代码示例
(1)无附加选项
[86god@localhost 桌面]$ grep love t2.txt
I love you
I love you
I love you
I love you
(2)-v 选项,反向匹配:
[86god@localhost 桌面]$ grep -v love t2.txt
I LOVE YOU
I Love You
I LOVE YOU
I Love You
I LOVE YOU
I Love You
I LOVE YOU
I Love You
I l* you
(3)-i 选项,忽略大小写:
[86god@localhost 桌面]$ grep -i "LOVE" t2.txt
I love you
I LOVE YOU
I Love You
I love you
I LOVE YOU
I Love You
I love you
I LOVE YOU
I Love You
I love you
I LOVE YOU
I Love You
(4)-n 选项,显示匹配行的行号:
[86god@localhost 桌面]$ grep -n love t2.txt
1:I love you
4:I love you
7:I love you
10:I love you
(5)-E 支持扩展正则,| 是扩展正则中的特殊含义的符号,代表任意一个匹配(不是管道哦):
[86god@localhost 桌面]$ grep -E 'love|LOVE' t2.txt
I love you
I LOVE YOU
I love you
I LOVE YOU
I love you
I LOVE YOU
I love you
I LOVE YOU
(6)-F 不要按正则来解析,就要字符串本身:
[86god@localhost 桌面]$ grep -F "l*" t2.txt
I l* you
(7)-c 只显示匹配的行数:
[86god@localhost 桌面]$ grep -c love t2.txt
4