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


当前回答

在表达式中插入制表符的另一种方法是使用Bash中不太为人所知的$'\t'引号:

grep $'foo\tbar'        # matches eg. 'foo<tab>bar'

(注意,如果你匹配固定字符串,你可以使用-F模式。)

有时使用变量可以使符号更易于阅读和管理:

tab=$'\t'               # `tab=$(printf '\t')` in POSIX
id='[[:digit:]]\+'
name='[[:alpha:]_][[:alnum:]_-]*'
grep "$name$tab$id"     # matches eg. `bob2<tab>323`

其他回答

如果使用GNU grep,你可以使用perl风格的regexp:

grep -P '\t' *

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

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

多次查找空格[[:space:]]*

grep[:太空 :]]*'.''.'

会发现这样的东西:

“账单”..

这些是单引号('),而不是双引号(")。这就是在grep中进行连接的方法。= -)

我用ksh

grep "[^I]" testfile

你可以打字 Grep \t foo 或

grep '\t' foo

在文件foo中搜索制表符。您可能还可以使用其他转义代码,尽管我只测试了\n。虽然这相当耗时,而且不清楚为什么要这样做,但在zsh中,您还可以键入制表符,回到开头,grep并将制表符用引号括起来。