Linux文本处理工具grep、sed、awk用法详解
文章目录
1、grep
1)grep简介
grep命令是一个Linux文本处理工具,它与egrep命令属于同一系列,这些命令都是用于对文件和文本执行重复搜索任务的工具。我们可以通过grep命令指定特定搜索条件来搜索文件及其内容以获取有用的信息。grep是全局搜索正则表达式并打印出匹配的行,其抓取数据是贪婪模式,即不会漏掉过滤内容,但准确性会相对降低。
2)grep命令格式
grep 匹配条件 处理文件名称
grep root passwd ##过滤root关键字所在的行
grep -i root passwd ##忽略大小写过滤root关键字所在的行
grep -E "\<root" passwd ##过滤root字符之前没有字符的行
grep -E "root\>" passwd ##过滤root字符之后没有字符的行
grep -数字 ##显示过滤行以及上面几行和下面几行
grep -n ##显示匹配的行所在行号
grep -A数字 ##显示过滤行以及下面几行
grep -B数字 ##显示过滤行以及上面几行
grep -v ##反向过滤
实验步骤:
1)切换到一个空目录/mnt中,cp /etc/passwd .
复制/etc/passwd文件到该目录(. 表示当前目录)中,避免文件内容过长删除一部分内容,使用grep命令在截取以某个字符串结尾的数据时,如果需要判断的结尾字符串有多个,需要用 | 连接多个正则表达式,但执行命令后抓取数据失败,这是因为 | 是扩展表达式,我们需要使用egrep命令才能用 | 连接多个判断字符串进行数据抓取,为了便于记忆,我们可以使用统一命令grep -E
2)编辑/mnt/passwd文件,在其中加入几行数据用来进行命令测试
3)使用grep命令过滤passwd文件中root关键字所在的行、使用-i 参数忽略大小写过滤passwd文件中root关键字所在的行,可以看到过滤结果中多了一条含有ROOT字符串的行
4)使用grep -E
命令过滤passwd文件中root字符前没有字符的行、root字符后没有字符的行
注意: grep使用"<“或”>"只能抓取匹配字符串之前或之后不能有字符串的数据,像/root也会被查找出来,这是因为/为单个字符,而不是字符串
5)使用grep命令过滤passwd文件中ROOT关键字所在行及其上、下5行;使用grep命令过滤passwd文件中ROOT关键字所在行并显示行号;使用grep命令过滤显示passwd文件中ROOT关键字所在行及下面3行;使用grep命令过滤显示passwd文件中ROOT关键字所在行及上面3行
6)使用-v参数反向过滤passwd文件中不含有root关键字的行
7)命令练习:过滤passwd文件中行首、行尾不以root开头、结尾,行中有root关键字的行并显示
3)grep命令字符数量匹配规则
正则表达式 | 含义 |
---|---|
^westos | 以westos关键字开头 |
westos$ | 以westos结尾</ |