Se debe a que no haya lo que buscas, además de que con ">" estás truncando el contenido del archivo.
leo@leo-desktop:~/Escritorio$ cat file.txt
Leonardo
Gutierrez
Ramirez
c++
leo@leo-desktop:~/Escritorio$ cat file.txt | grep -i "^c+.*$"
c++
leo@leo-desktop:~/Escritorio$ cat file.txt | grep -i "^c+.*$" >> "file.txt"
leo@leo-desktop:~/Escritorio$ cat file.txt
Leonardo
Gutierrez
Ramirez
c++
c++
leo@leo-desktop:~/Escritorio$
#!/usr/bin/bash
exec 6>&1
exec > "salida.txt"
cat "file.txt" | grep -i "c++"
exec 1>&6 6>&-
cat "file.txt"
exit 0
Perfecto, quisiera que se pusieran más dudas sobre shell script, así practicamos todos este maravilloso lenguaje.