Você pode usar o seguinte programa awk :
awk -v s=" OK" '/OK$/ { print; } !/OK$/ { print $0 s; s=""; }'
Funciona assim:
/OK$/ { print; }
imprime qualquer linha que termine em OK , enquanto
!/OK$/ { print $0 s; s=""; }
imprime qualquer linha não que termina em OK com o valor da variável s anexada.
Variável s inicialmente é a string ' OK' . Ele muda para a string vazia após o primeiro encontro de uma linha que não termina em OK .
Atualizar
Ainda mais conciso:
awk -v s=" OK" '!/OK$/ { print $0 s; s=""; } /OK$/'
elimina a ação { print; } da condição /OK$/ , pois { print; } é a ação padrão.
Correção
Olhando a questão novamente, ela não diz que OK deve ser adicionado à primeira linha que não tenha OK , mas sim que a primeira linha não tenha um OK que siga uma linha que tem um OK . Portanto, devemos manter uma variável, c , que sinalize pelo menos uma linha OK , e uma variável d que sinaliza que estamos prontos:
awk ' /OK$/ { if (!d) c=1; }
!/OK$/ { if (c) d=1; }
c && d { s=" OK"; c=0; }
{ print $0 s; s=""; }'