Lniux三剑客——Grep

前言

echo guangge{01...100...2} 第二个是间隔多少个计数

命令别名 alias, unalias , 作用是封装命令

alias rm = 'rm -i'

命令历史 history

!行号

!! 上一次的命令

ctrl + a 移动到行首

ctrl + e 移动到行尾

Grep

格式:

bash 复制代码
grep [options] pattern [files]

常用参数:

参数选项 解释说明
-v --invert-match:显示不能被模式匹配到的行
-n 显示匹配行与行号
-i ignorecase,忽略字符的大小写
-c 只统计匹配的行数
-E 使用egrep命令,支持使用扩展的正则表达式元字符
--color=auto 为grep过滤结果添加颜色
-w 只匹配过滤的单词
-o 仅显示匹配到的字符串本身
-q --quiet 或 --silent:静默模式,即不输出任何信息
-r 递归查找子目录中的文件

基础正则表达式BRE集合

基本正则表达式BRE集合

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

扩展正则表达式实践

+

+号表示匹配前一个字符1次或多次,必须使用grep -E扩展正则

此处使用grep-E进行实践扩展正则:

grep -E 'l+' test.txt

?符

匹配前一个字符0次或1次1

bash 复制代码
 找出文件中包含gd或god的行
 grep -E 'go?d' test.txt

god

#字母o出现了一次

gd

#字母o出现了0次

|符

竖线|在正则中是或者的意思

bash 复制代码
找出系统中的txt文件,且名字里包含a或b的字符
find / -maxdepth 3 -name "*.txt" | grep -i -E "a | b"

()小括号

将一个或多个字符捆绑在一起,当作一个整体进行处理;

  • 小括号功能之一是分组过滤被括起来的内容,括号内的内容表示一个整体

  • 括号()内的内容可以被后面的"\n"正则引用,n为数字,表示引用第几个括号的内容

    • \1∶表示从左侧起,第一个括号中的模式所匹配到的字符

    • \2:从左侧期,第二个括号中的模式所匹配到的字符

bash 复制代码
grep -E 'g(oo | la)d' test.txt
# good
# glad


#匹配两次括号内容
grep -E "(l..e).*\1" lovers.txt
# I love my lover.
# He love his lovers.

{n,m}匹配次数

重复前一个字符各种次数,可以通过-o参数显示明确的匹配过程

意思为匹配 y 最少2次,最多4次。

也可以忽略n 或 m , 默认边界值: y{n,} y{,m}

复制代码
grep -E "y{2,4}" test.txt
# yyyyyyyyyu
# yyyyu

#加了 -o 显示匹配的内容
grep -E "y{2,4}" test.txt -o
# yyyy
# yyyy
# yyyy
相关推荐
李迟1 小时前
跨系统平台实践:在内网自建kylin服务版系统yum源
linux
odoo-卜永1 小时前
ubuntu22.04连接爱普生打印机型号L385
linux·经验分享·ubuntu
小麦嵌入式2 小时前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
刘若水2 小时前
Linux: 进程信号初识
linux·运维·服务器
共享家95274 小时前
深入剖析Linux常用命令,助力高效操作
linux·运维·服务器
Zfox_5 小时前
【C++项目】从零实现RPC框架「四」:业务层实现与项目使用
linux·开发语言·c++·rpc·项目
吃旺旺雪饼的小男孩5 小时前
Ubuntu 22.04 安装和运行 EDK2 超详细教程
linux·运维·ubuntu
IT小馋猫5 小时前
Linux 企业项目服务器组建(附脚本)
linux·服务器·网络
阿政一号5 小时前
Linux进程间通信:【目的】【管道】【匿名管道】【命名管道】【System V 共享内存】
linux·运维·服务器·进程间通信
又过一个秋5 小时前
【sylar-webserver】7 定时器模块
linux·c++