Grep
查找某个文件中关键词&过滤文本文件中某个字符
格式:
grep -option(参数) word(字符) file(文件)
常用参数:
-a:以文本文件方式搜索(默认)
-c: 统计匹配内容 在文件中出现的次数(一共多少条符合)
-E:使用egrep扩展模式匹配(正则)
-n:输出结果所在文件中的行号
-v:反向选择,即显示不包含匹配文本的所有行
-w: 精准匹配
-o 打印匹配词
-i: 忽略大小写
-A : (after) 匹配之后行
-B:(before)匹配之前行
-C: (context)匹配掐和后的行
例子:输出ifconfig显示的ip地址所在行

通配符
*:0个或多个数字,字符
?: 匹配任意一个字符
#:表示注解
[ ] :内容范围匹配括号中的内容
{}: 命令块,多个命令匹配
正则
* 前一个字符匹配 0 次或多次;
. 匹配除了换行符以外任意一个字符;
.* 代表任意字符;
^ 匹配行首,即以某个字符开头;
$ 匹配行尾,即以某个字符结尾;
(..) 标记匹配字符;
[ ] 匹配中括号里的任意指定字符,但只匹配一个字符;
[^ ] 匹配除中括号以外的任意一个字符;
\ 转义符,取消特殊含义;
< 锚定单词的开始;
> 锚定单词的结束;
{n} 匹配字符出现 n 次;
{n,} 匹配字符出现大于等于 n 次;
{n,m} 匹配字符至少出现 n 次,最多出现 m 次;
\w 匹配文字和数字字符;
\W \w 的反置形式,匹配一个或多个非单词字符;
\b 单词锁定符;
\s 匹配任何空白字符;
\d 匹配一个数字字符,等价于[0-9]。
例1:找出3位数字和6位数字的内容([0-9]表示匹配1位数字,写3个是匹配3个,多位的话可用[0-9]{3}表示出现3次,都是一个意思。grep不识别{},需要加-E)

2
匹配ip地址(grep -E "^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$" tongpei.txt )[0-9]匹配单个数字,{1,3}出现1--3次,^开头,$结束
也可这么写(cat host.txt|grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}"--把表达式括起来,后面用通配{3}表示出现三次更简洁。
筛选IP,并排除255开头和结尾cat host.txt|grep -E "([0-9]{1,3}.){3}[0-9]{1,3}"|grep -v "^255"|grep -v "255$"

ifocnfig命令查看ip 过滤网卡IP地址排除127.0.0.1和255
ifconfig|grep -oE "([0-9]{1,3}\.){3}[0-9]{1,3}"|grep -v "255"|grep -v "127"
3.查找除了1的字符([^]表示匹配括号意外的任意字符)

4.查找带有ad 字符的(正则[ ]匹配的是括号中的一个字符,而不是整个完整的字符!a[dc]表示ad 或者ac)

5.补充:sort,uniq (排序,去重)
6.过滤出nginx配置文件中生效的行
grep -vE '^$|#' nginx.conf (去除空行和#号的)