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

如何在grep正则表达式中匹配单个连续字符,用单条命令筛选含$且后续为单个=的行

单个grep命令匹配$后紧跟单个=的行(排除==情况)

你可以通过Perl兼容正则表达式(grep -P)结合负向前瞻来实现这个需求,完全不需要管道命令。具体命令如下:

grep -P '.*\$.*=(?!=)' your_file.txt

正则规则拆解:

  • \$:匹配字面量$(因为$在正则里默认代表行尾,必须转义才能匹配实际的美元符号)
  • .*:匹配$之后的任意字符(直到找到目标=)
  • (?!=):负向前瞻断言,确保匹配到的=后面不是另一个=——这正是排除==情况的核心逻辑

针对你的示例测试:

对于这些目标行:

$string = 'content'; (匹配)
$_array['key']=12; (匹配)
if ($str == 'pass') (不匹配)
return $var1==$var2; (不匹配)

运行上述命令后,只会返回前两行符合要求的内容,精准排除了包含==的行。

如果你的环境不支持grep -P(比如部分老版本GNU grep或BSD grep),也可以用扩展正则的反向匹配思路,但需要注意这种方式会漏掉=在行尾的情况:

grep -E '\$[^=]*=[^=]?' your_file.txt

不过优先推荐grep -P的方案,它更简洁且能覆盖所有场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 06:34:13