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


当前回答

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

其他回答

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

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

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

grep -P '\t' *

grep "$(printf '\t')"在Mac OS X上为我工作

在表达式中插入制表符的另一种方法是使用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`

一种方法是(这是Bash)

grep -P '\t'

-P将打开Perl正则表达式,因此\t将工作。

正如用户unwind所说,它可能是特定于GNU grep的。另一种方法是在shell、编辑器或终端允许的情况下插入一个制表符。