名称
grep,egrep,fgrep,rgrep [手册页]-打印与图案匹配的线
概要
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
例子
grep
首先要开始此linux grep命令行教程,我们需要创建一个示例文件以供使用,请运行以下命令:
echo -e "Redhatlinux\nDebianLInux4.0\nPCLinuxOS\n
OpenSUSE\nLinUxFEDORA\n\nMandriva" > file.grep_1
echo -e "MintLinux\nLinuxGYM1.0.3\nUbuntu\n
Kubuntu\nSlaxLiNuX\n\nKnoppix" > file.grep_2
您已经假设grep可用于搜索文件中的字符串。让我们搜索单词”linux”:
grep linux *
由于Linux grep中的所有其他内容也区分大小写,因此要忽略大小写,我们需要将grep与-i选项结合使用:
grep -i linux *
grep选项-h允许我们禁止显示文件名,并使用-n选项grep为文件中的行编号。 –colour =自动高亮显示匹配项:
grep -inh --colour=auto linux *
如果我们不希望grep输出不包含带有关键字linux的行的输出行,则使用-v(invert)选项:
grep -iv linux *
使用-c时,grep可以计算文件中字符串出现的次数,因此grep将显示关键字linux在两个文件中均未出现的次数:
grep -icv linux *
如果我们正在寻找包含关键字”Ubuntu”的文件的名称,我们将使用grep的-l选项:
grep -l Ubuntu *
带-x选项的Grep将仅打印精确的出现次数。
grep -ixc linux *
Grep甚至可以使用包含匹配模式的文件:
echo "LinUx" > grep_pattern.txt
grep -f grep_pattern.txt *
搜索日志文件时,系统管理员一定会喜欢以下grep选项。 -B3(匹配前显示3行)和-A3(匹配后显示3行)。为了使其更具可读性,可以使用–colour = auto:
grep -B3 -A3 --colour=auto "command" /var/log/dmesg
Grep&正则表达式
Grep和正则表达式(regex)。这个主题肯定可以涵盖整本书,但是如果至少不显示grep和正则表达式的几个示例,那将是可耻的。例如,要使grep只返回包含数字的行,我们使用以下命令:
grep [0-9] *
要使用grep计数文件中的所有空行,我们使用以下命令:
grep -ch ^$ file.grep_2
让我们看看哪一行以”L”开头并以数字结尾(^->匹配该行的开头,$->匹配该行的结尾):
grep ^L.*[0-9]$ *
为了使grep只匹配”b”是单词中第三个字符的行,我们可以使用以下命令linux命令:
grep ..b *
egrep
egrep是grep的扩展版本,或者egrep等于grep -E。 Egrep支持更多的正则表达式模式。让我们搜索正好包含两个连续的p字符的行:
egrep p{2} *
OR
grep pp *
OR
grep -E p{2} *
让我们获取egrep命令的输出,该输出的所有行均以”S”或”A”结尾:
egrep "S$|A$" *
fgrep
fgrep是grep的更快版本,它不支持正则表达式,因此被认为是更快的。 fgrep等于grep -F。 fgrep不解释正则表达式(regex)的简单证明:
fgrep linux$ *
egrep linux$ *
grep linux$ *
rgrep
rgrep是grep的递归版本。在这种情况下,递归意味着rgrep在为指定模式抓取时可以递归通过目录。 rgrep与grep -r类似。
mkdir -p dir/dir1
echo "Linux_rgrep" > dir/dir1/rgrep.txt
grep rgrep *
rgrep rgrep *
grep -r rgrep *