Linux三剑客——grep命令与正则表达式

本文介绍了Linux系统中用于文本处理的三个重要工具——grep、sed和awk。grep是文本搜索工具,能按用户指定的模式过滤文本;sed是流编辑器,用于编辑文件中的文本;awk则是文本报告生成器,擅长格式化文件内容。文中详细讲解了grep的用法,包括忽略大小写、显示匹配行、使用扩展正则表达式等,并提供了多个实例。
摘要由CSDN通过智能技术生成

Linux 三剑客

grep : 负责过滤,可以对文本、命令结果进行过滤
sed   : 流编辑器,文本编辑工具
awk   :Linux的文本报告生成器(格式化文件),Linux上是gwak(GNU/AWK)

😈 grep命令介绍

Global search REgular expression and Print ouy the line.
作用:文本搜索工具,根据用户指定的模式(过滤条件)对目标文件进行匹配检查,打印匹配到的行。
模式:由正则表达式的元符号文本符号所编写出来的过滤条件

grep [options] [pattern] file

  • -i :「 ignorecase」 | 忽略大小写
  • -o : 仅显示匹配到的字符串本身
  • -v : 「–imvert-match」 | 显示不能被模式匹配到的行(取反)
  • -E : 支持使用扩展的正则表达式元字符
  • -q : 「–quiet,–sitent」 | 静默模式,即不输出任何信息。

举几个🌰

👾 空行篇
grep ^$ a.txt # 查找所有空行
grep ^$ a.txt -n # 查找所有空行并显示行号
grep ^$ a.txt -c # 查找总共有多少空行
grep ^$ a.txt  -n -v  # 查找不是空行的内容并显示行号
grep "." a.txt # 查找所有的非空行
👾 开头结尾篇
grep ^# grep.txt -n # 查找以#开头的行(一般是注释行)
grep ^$ a.txt  v | grep ^# grep.txt -v -n # 查找除了井号开头以及空行的行
grep -n "\.$" a.txt # 查找以`.`结尾的行 ,注意要使用转义字符`\`
grep -n "/bin/bash$" /etc/passwd # 查找使用/bin/bash的用户
👾 行内内容
grep ".s" a.txt # 查找文件中的出现的?s
grep "i*" a.txt # 查找文件中的i
grep ".*e" a.txt # 走到e结束
grep [a-z] a.txt # 找出文件中所有的小写字母
grep [a-zA-Z0-9] a.txt # 找出文件中所有的大小写字母和数字
👾 扩展正则表达式
grep -E "i+" a.txt # 查找所有包含i的行
grep -E "c{4,}" a.txt # 查找至少4个连续的c
grep -E "c{4,6}" a.txt # 查找最少4个最多6个连续的c
👾 小括号

执行下面命令创建一个b.txt文件方便下面练习:
touch b.txt && echo -e “good\ngooood\ngoooooooooood\ngooooooooooooooooooooood\ngad\nglad” >> b.txt

grep -En "g(oo|la)d" b.txt # 查找`good`与`glad`这两个单词并显示行号
👾 find命令

find命令是查找文档文件夹下文件信息的,可以进行遍历查找符合要求的文件,这里不做扩展,使用到请自查

find /home/jim -mtime 1 # 查找最近两天创建的文件

在Linux上所有文件的行都是以$结尾,可以使用cat -en filename进行验证








📜 附录:正则表达式

基本正则表达式

符号名称含义
^尖角符以…开头的行,比如^Jim表示以Jim开头的行
$美元符以…结尾的行,比如Jim$表示以Jim结尾的行
^$组合符表示空行
.句号符匹配有且只有一个字符的行,不能匹配空行
\转义字符让特殊含义的字符,现出原形,还原本意,比如\.表示小数点
*星号匹配前一个字符(连续出现)0次或1次以上,重复0次代表空,即匹配所有内容
.*组合符匹配所有内容
^.*组合符匹配任意多个字符开头的内容
.*$组合符匹配任意多个字符结尾的内容
[abc]匹配集合内任意一个字符,a或b或c,也可以写成[a-c]
[ \^abc]取反操作匹配除了^后面的任意字符之外的字符,不可以是a或b或c,^表示取反操作

扩展正则表达式

扩展正则表达式必须配合grep -E使用才会生效

符号名称含义
+加号匹配前一个字符一次或多次
[:?]+中括号+加号表示匹配括号内的:?一次或多次
?问号匹配前一个字符0次或1次
|竖杠(管道符)表示「或者」,同时过滤多个字符串
()括号分组过滤,括号内的内容为一个整体
a{n,m }花括号匹配前一个字符a至少n次,至多m次
a{n}花括号,单参数匹配前一个字符正好n次
a{n,}花括号缺参数匹配前一个字符至少n次
a{,m}花括号缺参数表示匹配前一个字符最多m次
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值