linux中的三剑客之一:grep
一、介绍:
grep:是一种Unix/Linux命令,它可以在文本文件中搜索指定的字符串,并显示匹配的行。它可以使用正则表达式来搜索文本,并可以搜索多个文件。
二、命令:
参数 说明 -b 在输出的每一行显示包含匹配字符串的行在文件中的字节偏移量 -c(count) 仅显示找到的行数 -i(ignore) 显示找到的行,比较时不区分大小写 -h 在查找多个文件时,指示grep不要将文件名加入到输出之前 -l 显示首次匹配串所在的文件名并用换行符将其隔开。 -n(line-number) 显示找到的行,显示行号(文件首行行号为1) -o(only-matching) 只显示匹配的内容 -A 如果匹配成功,则将匹配行及其后n行一起打印出来 -B 如果匹配成功,则将匹配行及其前n行一起打印出来 -C 如果匹配成功,则将匹配行及其前后n行一起打印出来 -E 等于egrep,扩展 --color 高亮颜色显示匹配到的字符串 -v(invert,反向) 显示没有匹配字符串的行 -x(line-regexp) 只显示整行严格匹配的行
例子1:
grep 'text file' Readme.txt # 在文件Readme.txt中搜索字符串'text file'
例子2:
grep 'text file' * # 在所有文件中搜索字符串'text file'
例子3:
grep 'text file' *.java # 在所有的.java文件中搜索字符串'text file'-
使用特殊符号进行字符串的匹配:
匹配模式 说明 grep h 文件名 查找文件里有字符h的行 grep ^q 文件名 显示匹配以q开始的行 grep ^[ ^q ] 文件名 显示不匹配以q开头的行 grep ^[0-9] 文件名 显示匹配以数字开头的行 grep q$ 文件名 显示匹配以q结束的行 grep ^$ 显示空白行 grep -r h ./* 如果要明确搜索当前目录中的子目录有h的行 grep -d skip h ./* 忽略当前目录下的子目录下的普通文件
例子1:
grep ^SELINUX /etc/selinux/config # 查找以SELINUX开头的行数据
例子2:
grep ^$ passwd # 显示要一个文件中空行
例子3:
grep ^[^$] passwd # 显示要一个文件中空行