如何在不使用文字制表符的情况下 grep 制表符,为什么 \t 不起作用?

Las*_*all 180 bash regex grep posix-compliant

当我使用 (e)grep 在文件中搜索选项卡时,我使用了文字选项卡 ( ^v + <tab>)。我不能\t用作正则表达式中选项卡的替代品。使用例如 sed 这个表达式非常有效。

那么是否有可能使用非文字替代品<tab>以及非工作/未解释的背景是什么\t

les*_*ana 253

grep 使用POSIX定义的正则表达式。无论出于何种原因,POSIX 都没有定义\t为制表符。

您有几种选择:

有关POSIX 和其他系统中定义的字符类的概述,请参阅关于正则表达式维基百科文章


enz*_*tib 18

这不是您想要听到的确切答案,但 bash 提供了转义序列的可能用途

command | grep $'\t'
Run Code Online (Sandbox Code Playgroud)

(不要把它放在双引号中!)。

  • 事实上,我建议@enzotib 将答案编辑为简单的`grep $'\t'`。 (2认同)