Uma clara possível melhoria é em match(), que pode usar o código de saída de grep pra saber se encontrou mesmo, assim não precisa ficar colocando a saída na memória, só verificar $ ou colocar no próprio if;
Replace() você pode trocar por sed -i em vez de cat $file -i é de inplace troca direto no arquivo;
Em if [ $retval = 1 ]; é um bom costume colocar sempre os valores à esquerda da comparação entre aspas, ou, às vezes fazem de colocar um x na frente da variável: "if test x$val = x; then blabla; fi " (autoconf tem isso);
Tem mais um problema mas não tenho muita certeza: é verificado se a máquina tem uma radeon usando lspci | grep Radeon, mas isso pode não funcionar porque o kernel pode não ter aquele pci-id ainda;