如何在Unix平台上的文件中grep标签(\t) ?


当前回答

诀窍是在单引号前使用$符号。它也适用于切割和其他工具。

grep $'\t' sample.txt

其他回答

+1方式,工作在ksh,破折号等:使用printf插入制表符:

grep "$(printf 'BEGIN\tEND')" testfile.txt

我从来没有设法使“\t”元字符与grep一起工作。 然而,我发现了两个替代方案:

使用<Ctrl-V> <TAB>(按Ctrl-V然后输入TAB) 使用awk: foo | awk '/\t/'

在其他答案中给出的$'\t'符号是特定于shell的——它似乎在bash和zsh中工作,但不是通用的。

注意:下面是针对fish shell的,在bash中不起作用:

在fish shell中,可以使用不带引号的\t,例如:

grep \t foo.txt

或者可以使用十六进制或unicode符号,例如:

grep \X09 foo.txt
grep \U0009 foo.txt

(这些符号对于更深奥的字符很有用)

因为这些值必须是不加引号的,所以可以将加引号的值和不加引号的值进行拼接:

grep "foo"\t"bar"

我用ksh

grep "[^I]" testfile

使用echo为你插入标签grep "$(echo -e \\t)"