shell标称四剑客之grep
grep常用参数详解如下:
-a:以文本文件方式搜素
-c:计算找到的符合行的次数
-i:忽略大小写
-n:顺便输出行号
-v:方向选择,即显示不包含匹配文本的所有航
-h:查询多文件时不显示文件名
-l:查询多文件时只输出包含匹配字符的文件名
-s:不显示不存在或无匹配文本的错误信息
-E:允许使用egrep扩展模式匹配。
正则表达式详解如下:
* :前一个字符匹配0次或多次
. :匹配除了换行符以外任意一个字符
.* :代表任意字符
^ :匹配行首,即以某个字符开头
$ :匹配行尾,即以某个字符结尾。
\(..\) :标记匹配字符
[ ] :匹配中括号里任意指定字符,但只匹配一个字符。
[ ^ ] :匹配除中括号以外的任意一个字符
\ :转义符,取消特殊含义
\< :瞄定单词的开始
\> :瞄定单词的结束
{n,} : 匹配字符出现大于等于n次
{n,m} :匹配字符至少出现n次,最多出现m次
\w : 匹配文字和数字字符
\W : \w的反置形式,匹配一个或多个非单词字符
\b :单词锁定符
\s :匹配任何空白字符
\d :匹配一个数字字符,等价于[0-9]。
常用grep工具企业演练案例详解如下:test.sh文本如下
[root@node1 dbuser]# grep -c "test" test.sh : test.sh统计test字符的总行数
4
[root@node1 dbuser]# grep -i "TEST" test.sh :test.sh不区分大小写查找TEST所有的行
test
TEST
Test
test3
test6
test5
[root@node1 dbuser]# grep -n "test" test.sh test.sh打印test的行以及行号
1:test
5:test3
6:test6
7:test5
[root@node1 dbuser]# grep "test[35]" test.sh :test.sh以test字符开头,接3或者5的行
test3
test5
[root@node1 dbuser]# grep "[Mm]ay" test.sh 匹配以M或者m开头,接ay的行
May
may
[root@node1 dbuser]# grep "K...D" test.sh 匹配K,三个任意字符,紧接D的行
000K898D
[root@node1 dbuser]# grep "[A-Z][9]D" test.sh 匹配大写字母,紧跟9D的字符行
A9D
Z9D
[root@node1 dbuser]# grep "T\{2,\}" test.sh 打印字符T连续出现2次以上的行
TT28
TTT38
TTTTTT
TTTT
[root@node1 dbuser]# grep "T\{4,6\}" test.sh 打印字符T连续出现4次及6次的行
TTTTTT
TTTT
[root@node1 dbuser]# grep -n "^$" test.sh 打印空行的所在的行号
17:
[root@node1 dbuser]# grep -vE "# | ^$" test.sh 不匹配文件中的#和空行
test
TEST
Test
10086
test3
test6
test5
May
may
000K898D
A9D
Z9D
TT28
TTT38
TTTTTT
TTTT
#78910
db
config
sql
192.168.10.5
255.255.255.255
[root@node1 dbuser]# grep --color -ra -E "db|config|sql" test.sh 匹配包含db或者config或者sql的文件
db
config
sql
[root@node1 dbuser]# grep --color -E "\<([0-9]{1,3}\.){3}([0-9]{1,3})\>" test.sh test.sh匹配ipv4地址
192.168.10.5
255.255.255.255
66.54.91.88
0.0.0.0
266.333.777.888
266.388.777.999.101
重点解读:--color加特殊色显示
-E 正则匹配
\<瞄定单词的开始
[0-9]任意一个字符,{1,3}出现一次或3次,那就意味,取值是0-999
\.转义 . 使.具备原意 .分隔符
(){3} 出现三次,即0.0.0. 到999.999.999.
[0-9]任意一个字符,{1,3}出现一次或3次,那就意味,取值是0-999
即有.分隔的一个ipv4地址