Linux三剑客

本文详细介绍了Linux三剑客——grep、sed和awk的使用,包括正则表达式的基本概念、grep命令的实践、sed流编辑器的应用以及awk的内置变量和格式化输出。通过实例展示了如何利用这三大工具进行文本过滤、编辑和格式化,对于Linux运维人员来说是必备的知识。
摘要由CSDN通过智能技术生成

Liunx三剑客:

grep:文本过滤工具,( 模式:pattern)工具
sed:stream editor,流编辑器;文本编辑工具
awk: Linux Linux gawk的文本报告生成器(格式化文本),Linux上是gawk

正则表达式

Linux三剑客主要分两类:
1.基本正则表达式(BRE basic regular expression)
BRE对应元字符有 ^$.[]*
2.扩展正则表达式(ERE extended regular expression)
ERE在BRE基础上,增加上 (){}?+| 等字符

基本正则表达式BRE集合

  • 匹配字符
  • 匹配次数
  • 位置锚定
符号 作用
^ 尖角号,用于模式的最左侧,如"^ab"匹配以ab单词开头的行
$ 美元符,用于模式的最右侧,如"ab$",表示以ab单词结尾的行
^$ 组合符,表示空行
. 匹配任意一个且只有一个字符,不能匹配空行
\ 转义字符,让特殊含义的字符,现出原形,还原本意,例如.代表小数点
* 匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容
.* 组合符,匹配任意长度的任意字符
[abc] 匹配[]集合内的任意一个字符,a或b或c,可以写[a-c]
[^abc] 匹配除了后面的任意字符,a或b或c,表示对[abc]的取反
<pattern> 匹配完整的内容
<或> 定位单词的左侧,和右侧,如可以找出"da chao ge",却找不出"dachaoge"

扩展正则表达式BRE集合

扩展正则必须用grep -E才能生效

符号 作用
+ 匹配前一个字符1次或多次,前面字符至少出现1次
[: /]+ 匹配括号内的":“或者”/"字符一次或者多次
? 匹配前一个字符0次或者1次,前面字符可有可无
竖线 表示或者,同时过滤多个字符串
() 分组过滤,被括起来的内容表示一个整体
a{n,m} 匹配前一个字符最少n次,最多m次
a{n,} 匹配前一个字符最少n次
a{n} 匹配前一个字符正好n次
a{,m} 匹配前一个字符最多m次

Tips:
grep命令需要使用参数 -E即可支持正则表达式
egrep不推荐使用,使用grep -E替代
grep不加参数,得在特殊字符前面""反斜杠,识别为正则

三剑客之grep

全拼:Global search REgular expression and Print out the line
作用:文本搜索工具,根据用户指定的”模式(过滤条件)“对目标文本逐行进行匹配检查,打印匹配到的行
模式:由正则表达式的元字符及文本字符所编写出的过滤条件;
语法:
grep [options] [pattern] file
命令 参数 匹配模式 文件数据
-i:ignorecase,忽略字符的大小写
-o:仅显示匹配到的字符串本身;
-v:–invert-match:显示不能被模式匹配的行;
-E:支持使用扩展的正则表达式元字符;
-q,–quiet,–silent:静默模式,即不输出任何信息;
grep命令是Linux系统中最重要的命令之一,功能是从文本文件或管道数据流中筛选匹配的行和数据,如果再配合正则表达式,功能十分强大,是Linux运维人员必备的命令
grep命令里的匹配模式就是你想要找的东西,可以是普通的文字符号,也可以是正则表达式

参数选项 解释说明
-v 排除匹配结果
-n 显示匹配行与行号
-i 不区分大小写
-c 只统计匹配的行数
-E 使用egrep命令
-color=auto 为grep过滤结果添加颜色
-w 只匹配过滤的单词
-o 只输出匹配的内容

正则表达式grep实践

创建test.txt文件,内容如下

hello linux.
HELLO grep.

food
foood
flad

grep “food” test.txt -n #匹配有food的行,并打印行号
在这里插入图片描述
grep “food” test.txt -n -v #匹配没有food的行,并打印行号
在这里插入图片描述
grep “hello” test.txt -i #匹配hello的行,不区分大小写
在这里插入图片描述

grep -E “hello|food” test.txt #匹配hello或food的行
在这里插入图片描述

grep -E “hello|food” test.txt -c #统计匹配到的行数
在这里插入图片描述

grep -E “hello|food” test.txt -o #-o是输出匹配的内容
在这里插入图片描述
grep -E “hello” test.txt -w #-w单词匹配
在这里插入图片描述
grep -n ‘^$’ test.txt #匹配空行
在这里插入图片描述

grep -Ev “^#|^$” test.txt #过滤掉空行和以#号开头的行(测试过程中可以再文本中加一行#开头的行)
在这里插入图片描述
grep -n -i ‘^hello’ test.txt #匹配以hello开头的行
在这里插入图片描述

grep -n -i ‘d$’ test.txt #匹配以d结尾的行
在这里插入图片描述
Tip:
注意在Linux平台下,所有文件的结尾都有一个$符
可以cat -A 查看文件
在这里插入图片描述
grep -n ‘.$’ test.txt #匹配以小数点为结尾的行,注意如果小数点不加转义符,不加就会匹配任意一个且只有一个字符,除空行
在这里插入图片描述
grep -n ‘h*’ test.txt #*是找出前一个字符0次或者多次,找出文中出现”h“的0次或多次。如果是.*组合符,就代表匹配所有内容
在这里插入图片描述
grep -n ‘.*o’ test.txt #匹配以任意字符开始,最后一个o字母结束,这种属于贪婪匹配,贪婪匹配可以百度了解下。
在这里插入图片描述

  • [a-z]匹配所有小写单个字母
  • [A-Z]匹配所有单个大写字母
  • [a-zA-Z]匹配所有单个大小写字母
  • [0-9]匹配所有单个数字
  • [a-zA-Z0-9]匹配所有数字和字母

gre

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值