如何使用grep正则匹配仅含单个制表符而非多个制表符的行
匹配指定数量制表符行的grep实现方案
核心原理
- 用
^锚定行首,确保匹配的是行开头的制表符 - grep默认使用基础正则表达式(BRE),重复量词
{N}需要转义为\{N\}才能生效;添加-E参数启用扩展正则表达式(ERE)后,{N}可直接使用无需转义,这也是你之前用{N}不生效的核心原因 - 匹配完指定数量的制表符后,追加
[^\t]规则,确保后续字符不是制表符,避免多制表符行被误命中
匹配开头仅含1个制表符的行(text1所在行)
基础正则写法
grep $'^\t\{1\}[^\t]' 你的文件名
扩展正则写法(更易读)
grep -E $'^\t{1}[^\t]' 你的文件名
匹配开头仅含2个制表符的行(text3所在行)
基础正则写法
grep $'^\t\{2\}[^\t]' 你的文件名
扩展正则写法(更易读)
grep -E $'^\t{2}[^\t]' 你的文件名
补充:匹配全行仅含N个制表符的行
如果需要匹配的是整个行内总共只有N个制表符,不限制位置,可以用如下规则(以N=1为例):
grep -E $'^[^\t]*\t{1}[^\t]*$' 你的文件名
内容的提问来源于stack exchange,提问作者regexnewbie
相关产品推荐
相关产品推荐

