Como sed corresponde em greedy , sempre existe a possibilidade de que o texto após o final do comentário seja correspondido em vez do marcador real de final de comentário anterior, por exemplo. como em uma string entre aspas que contém "* /".
Isso não pode ser tratado por sed de maneira simples, mas você pode contornar isso. Aqui está um desses métodos: usando um marcador de espaço de caractere único para o delimitador final de dois caracteres. Usando o valor hexadecimal \x01 , pois os caracteres iniciais são seguros (isto é, não colidirão com o texto existente), pois não existem no texto normal.
sed "\|^/\*.*\*/|{ s|\*/|\x01|; s|.*\x01|| }" "$file"
Por outro lado, perl pode manipular lazy correspondência (e muito mais). Como já mencionado por Prince John Wesley nos comentários, aqui está o preguiçoso perl equivalente.
perl -ple 's|/\*.*?\*/||g' "$file"