linux每天一小步---grep命令详解

时间:2023-03-08 16:41:56
linux每天一小步---grep命令详解

1 命令功能

grep(global regular expression print全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2,我们利用这些返回值就可进行一些自动化的文本处理工作。

2 命令语法

grep 【选项】 模式pattern 【文件名file】    注:模式可为字符串或正则表达式

3 命令参数

-b  打印匹配行距文件头部的偏移量,以字节为单位

-o  与-b选项结合使用,打印匹配的词距文件头部的偏移量,以字节为单位

-c  只输出匹配行的数量

-i   搜索时忽略字母大小写

-h   查询多文件时不显示文件名

-l   指列出符合匹配的文件名,而不列出具体的匹配行

-n   列出所有的匹配行,并显示该行行号

-s   不显示不存在或无匹配文本的错误信息

-v   显示不包含匹配文本的所有行

-r   递归搜索,不仅搜索当前工作目录,而且搜索子目录

-q   禁止输出任何结果,已退出状态表示搜索是否成功

-E   支持扩展的正则表达式

-F   将样式视为固定字符串

-w   显示包含匹配模式的所有行

-x   只显示匹配模式的行

4 正则表达式

^  指定模式以什么开始,如^abc匹配所有以abc开始的行

$  指定模式以什么结束。如abc$匹配所有以abc结束的行

.   匹配一个非换行符的字符。如a.c匹配a后接任意一个字符,然后是c的行

*   匹配任意零个或多个字符。如*abc匹配所有后跟abc字符的行

.*   匹配任意字符

[]   匹配一个指定范围内的字符,如[Aa]bc匹配Abc和abc

[^]   匹配一个不在指定范围内的字符。如[^Aa]bc匹配不包含A和a字母开头后紧跟bc的行

\(\)   将\(\)的模式存储在特殊的保留空间,常与\n(n为1至9的数字)组合使用。如\(ab\).*\1匹配ab组合的两次重现,中间可能存在任何数目的字符。

\{n,m\}   区间表达式,匹配在它前面的单个字符重现的次数区间。\{n\}指的是重现n次;\{n,\}则为至少重现n次,而\{n,m\}为重现n至m次。

5 使用范例

【1】查找指定进程

ps -ef| grep 进程名

【2】查找指定进程个数

ps -ef | grep -c 进程名

【3】从文件中查找关键词

grep ‘查找的关键词’  文件名 如:grep ‘linux’ file1

【4】统计主机tcp连接数的行数

netstat -an | grep tcp |wc -l

作者:linux每天一小步

出处:http://www.cnblogs.com/westoslinux

如果你真心觉得文章写得不错,而且对你有所帮助,不妨帮忙“推荐"一下,您的“推荐”将是我最大的写作动力!

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接!