我想创建一个介于n和m个字母字符之间的序列,例如6和8,即a到z的大写或小写。序列必须与行的其余部分之间用空格或制表符分隔(在每一侧)
为什么我的代码不起作用?!
grep -E [ \t][A-Za-z]{6,8}[ \t] myfile.dat
输出给出6到8之间的所有单词序列,并且每边都有空格,但是对于\t
,它会将其翻译为字母t?!
怎么了?!
答案 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