在Linux中,grep查找以指定内容结尾的行需用$锚定行尾,配合单引号包裹模式并转义特殊字符;支持-i忽略大小写、-n显示行号、-v反向匹配、-r递归搜索及--color高亮。

在 Linux 中,用 grep 查找以指定内容结尾的行,关键在于使用锚定符 $ 表示行尾,并配合字面字符串或正则表达式。
基本语法:用 $ 锚定行尾
$ 是正则表达式中表示“行结束位置”的元字符。要把它和目标字符串连起来写,且通常需用单引号包裹整个模式,防止 shell 解释特殊字符。
- 查找以
.log结尾的行:grep '\.log$' filename(注意点号要转义) - 查找以
error结尾的行:grep 'error$' filename - 不加
$会匹配任意位置出现的字符串,加了才确保严格结尾
区分大小写与忽略大小写
默认 grep 区分大小写。若想忽略大小写,加 -i 选项:
-
grep -i 'warning$' /var/log/syslog—— 匹配warning、WARNING、Warning等结尾的行 - 注意:
-i不影响$的功能,只作用于字母匹配
匹配含空格或特殊字符的结尾内容
如果要匹配的结尾内容含空格、括号、星号等 shell 元字符,必须用单引号包裹整个模式,并对正则特殊字符做转义:
- 匹配以
(failed)结尾(含空格和括号):grep ' (failed)$' logfile - 匹配以
[OK]结尾:grep '\[OK\]$' status.log(方括号在正则中有含义,需反斜杠转义) - 避免双引号,因为 shell 可能提前展开变量或通配符
结合其他常用选项提升实用性
实际使用时常搭配以下选项增强效果:
-
-n显示行号:grep -n 'timeout$' app.log -
-v反向匹配(排除以某内容结尾的行):grep -v '\.tmp$' *.txt -
-r递归搜索目录:grep -r 'exit_code=0$' ./src/ -
--color=always高亮匹配部分(便于确认是否真在行尾)


















