grep \ t соответствующая буква "t", а не табуляция - PullRequest
0 голосов
/ 06 ноября 2018

Я хочу создать последовательность из n и m буквенных символов, например, 6 и 8, то есть прописные или строчные буквы от a до z. Последовательность должна быть отделена от остальной части строки пробелом или символом табуляции (с каждой стороны)

Почему мой код не работает?!

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

output дает всю последовательность слов от 6 до 8 и имеет пробел с каждой стороны, но для \t он переводит ее как букву t? !!

что не так?!

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Используя знак $ в начале:

grep -E $'[ \t][A-Za-z]{6,8}[ \t]' myfile.dat
0 голосов
/ 06 ноября 2018

Это работает для табуляции или пробелов с обеих сторон:

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

Кроме того, как предлагает @CharlesDuffy в комментариях, изменение [A-Za-z] на [:alpha:] будет лучше обрабатывать нестандартные локали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...