File:
TABLE1
1234
9555
87676
2344
Expected output:
Description of the following table:
TABLE1
1234
9555
87676
2344
File:
TABLE1
1234
9555
87676
2344
Expected output:
Description of the following table:
TABLE1
1234
9555
87676
2344
Actually echo and cat are enough to do what you want :
echo "Description of the following table:" | cat - file
The - argument tells cat to read from stdin.
With sed:
$ sed -e '1i\
Description of the following table:
' <file
Description of the following table:
TABLE1
1234
9555
87676
2344
printf "%s\n" 1 i "Description of the following table:" . w | ed filename
The printf outputs ed commands (one per line) which are then piped into ed filename.
ed edits the file as instructed:
1 # go to line 1
i # enter insert mode
Description of the following table: # text to insert
. # end insert mode
w # write file to disk
BTW, ed performs a real in-place edit, not write-to-temp-file-and-move like sed and most other text editing tools. The edited file keeps the same inode in the filesystem.
The awk option would be :
gawk '
BEGIN{print "Description of the following table:"}
{print $0}' file > temp && mv temp file
A bit more work than sed here because sed has got an in-place edit option -i by which you could directly write to file.