shell中的文本处理工具
一、grep
文本搜索工具,可以使用正则表达式搜索文本,把匹配的行打印出来
- grep支持正则表达式
- egrep支持扩展的正则表达式
grep -E
=egrep
1、grep的格式
grep 匹配条件 处理文件
-i |
忽略大小写 |
-E “\<root" |
root字符之前不能有字符 |
-E ”root\>“ |
root字符之后不能有字符 |
-数字 |
显示过滤行以及上面几行和下面几行 |
-n |
显示匹配的行所在行号 |
-A |
显示过滤行以及下面几行 |
-B |
显示过滤行以及上面几行 |
-v |
反向过滤 |
建立实验素材:
grep -E "bash$|nologin$" passwd ##过滤以bash结尾或nologin结尾的行
grep -i root passwd ##过滤含root关键字的行,不分大小写
grep -iE "\<root\>" passwd ##过滤root关键字前后都没有字符的行,不分大小写
grep -1 ROOT passwd ##显示含root的行,以及上下各一行
grep -A 2 -B 1 -n ROOT passwd ##显示含root的行,以及上1行,下2行,均显示行号
grep root passwd | grep -E "^root" -v ##显示root在结尾或中间的行,即反向过滤root在开头
2、grep字符数量匹配规则
^root |
以root开头 |
root$ |
以root结尾 |
s...k |
s开头k结尾中间任意3个字符 |
....k |
k结尾前后4个任意字符 |
* |
字符出现任意 |
? |
0到1次 |
+ |
1到任意次 |
{n} |
n次 |
{m,n} |
m到n次 |
{0,n} |
0-n次 |
{,n} |
0-n次 |
{m,} |
最少m次 |
(skk){6} |
skk字符串出现6次 |
建立实验素材:
grep -E 's.{2,4}s' grepfile ##s和s之间有2到4个任意字符
grep -E 's.?s' grepfile ##s和s之间有0到1个任意字符
grep -E