Você não escapou do caractere " . A barra invertida dupla antes será substituída por barra invertida única e o " não será ignorado. Remova uma barra invertida ou adicione uma.
Experimente esta expressão regular:
grep -i '^[0-9a-z _]\+\.png\([^0-9a-z]+\|$\)' file | grep -v '^[0-9A-Za-z _]\+\.\(png\|PNG\)\([^0-9A-Za-z]\|$\)'
Ele corresponderá a todas as linhas que contenham desde o começo da linha:
- pelo menos em caracteres
0-9(intervalo de0,1, ...,9caracteres),a-z' '(espaço), '_' - um ponto (precisa ser escapado com barra invertida, caso contrário, significará 'qualquer caractere único')
- 'png' (ou 'Png', etc. porque
-ié adicionado) - e não seguido por
0-9ea-zcaracteres (ouA-Zporque-ié adicionado).
-i - desativará a diferenciação entre maiúsculas e minúsculas