You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Unix系统中如何使用grep筛选空行及指定特殊字符的行?

如何用grep匹配空行和含指定特殊字符的行?

嗨,我来帮你搞定这个问题~你之前的grep命令只针对特殊字符做了匹配,但没包含空行的规则,咱们只需要把两个匹配条件组合起来就能实现需求啦!

核心思路

要同时匹配两种情况:

  1. 空行:在正则表达式里,空行可以用^$表示(^匹配行首,$匹配行尾,中间没有任何字符就是空行)
  2. 含特殊字符的行:你需要匹配的?#!%这些字符,在grep的字符集[]里可以直接写(如果要匹配字面意义的*,需要转义成\*,因为*在正则里是量词)

可行命令

方式1:使用扩展正则(推荐)

用-E选项启用扩展正则表达式,这样可以直接用|表示“或”的逻辑:

grep -n -E '^$|[?#!%]' file

参数说明:

  • -n:显示匹配行的行号,方便定位
  • -E:启用扩展正则,支持|这样的逻辑或语法
  • ^$|[?#!%]:匹配空行 或 包含?/#/!/%的行

方式2:使用基本正则

如果不想用-E,可以把|转义成\|,用基本正则实现:

grep -n '^$\|[?#!%]' file

额外说明

如果你的需求里确实要包含*这个特殊字符(看你原命令里写了*),只需要把它加入字符集并转义:

grep -n -E '^$|[?#!%*]' file

测试示例

假设你的file内容如下:

普通文本行
# 这是一行带#的注释

测试行?
带!的行
%特殊符号行

运行命令后会输出:

2:# 这是一行带#的注释
3:
4:测试行?
5:带!的行
6:%特殊符号行

完美匹配到了空行和所有含指定特殊字符的行~

内容的提问来源于stack exchange,提问作者semi abbasi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 15:39:06