Você poderia usar
grep -E "^.{4}.?.?.?.?.?.?.?$pattern"
onde $pattern
é a entrada do usuário, quero dizer, em algo como
$ echo "enter a pattern: "; read pattern; grep -E "^.{4}.?.?.?.?.?.?.?$pattern" file
enter a pattern:
6314
commA6314 ifosfamide 30 12
^.{4}.?.?.?.?.?.?.?
que são os primeiros 4 caracteres bloqueados, então os próximos 7 caracteres são opcionais, significando que se o padrão for apenas um caractere e estiver na 12ª posição, ele será encontrado e se tiver 7 caracteres e será iniciado a partir do 5ª posição, ainda seria encontrado.
-
^
início da linha -
.
qualquer caractere -
{4}
quatro do caractere anterior -
?
zero ou um dos caracteres anteriores