Linux三剑客

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]匹配所有数字和字母
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux剑客是指在Linux系统中经常使用的三个命令行工具,分别是grep、awk和sed。 首先是grep命令,它是Global Regular Expression Print的缩写,用于在文件中查找匹配某一模式的行。grep命令的基本语法是"grep [选项] 模式 文件",可以使用各种选项来处理不同的需求。grep命令的应用非常广泛,常用于检索文件内容、过滤日志、查找错误等,通过使用正则表达式,可以实现更高级的搜索。 其次是awk命令,它是一种文本处理语言,经常用于对文本文件进行分析和处理。awk命令的语法是"awk '条件 动作' 文件",其中条件是用于选择匹配的行,动作是对匹配的行执行的操作。awk命令可以方便地进行字段提取、计算、格式化输出等操作,特别适合处理结构化的文本数据。 最后是sed命令,它是Stream Editor的缩写,是一种基于行的文本处理工具。sed命令的基本语法是"sed [选项] '动作' 文件",其中动作是对每一行执行的操作。sed命令可以进行文本的增删改查等操作,如替换、删除、插入等,可以通过正则表达式实现复杂的模式匹配和替换。 Linux剑客Linux系统中非常重要的命令行工具,它们的灵活性和强大功能使得我们可以方便地对文本文件进行操作和处理。无论是开发、运维还是日常使用,熟练掌握grep、awk和sed命令都对提高工作效率和解决问题非常有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值