grep \ t匹配字母“ t”,而不是制表符

时间:2018-11-06 17:13:12

标签: unix grep

我想创建一个介于n和m个字母字符之间的序列,例如6和8,即a到z的大写或小写。序列必须与行的其余部分之间用空格或制表符分隔(在每一侧)

为什么我的代码不起作用?!

grep -E [ \t][A-Za-z]{6,8}[ \t] myfile.dat

输出给出6到8之间的所有单词序列,并且每边都有空格,但是对于\t,它会将其翻译为字母t?!

怎么了?!

2 个答案:

答案 0 :(得分:1)

这适用于制表符或两侧的空格:

grep -E "[:space:][:alpha:]{6,8}[:space:]" myfile.dat

另外,如@CharlesDuffy在评论中所建议的那样,将[A-Za-z]更改为[:alpha:]会更好地处理非标准语言环境。

答案 1 :(得分:1)

在开头使用$符号:

grep -E $'[ \t][A-Za-z]{6,8}[ \t]' myfile.dat