The reason it's necessary to do it this way is that the NC file is first of all a binary file, so you can't just cut out a segment. Second, the file is comparable to, say, a ZIP file, i.e. a container for many objects. Also for a ZIP file you would have to rewrite the file in order to remove a file contained in it.
I wrote a script for this for myself a while back, it's attached here in an updated form.
NOTE: Originally the idea was to implement this function with a single filename as argument, and make a tempfile with the new contents and then overwrite the original file. This is how nlsave() works, actually. It was however decided to play it safe, and let the user remove the original file and rename the new file, as desired.
SEE WARNING BELOW ABOUT USING THIS SCRIPT! Unless you really have to, don't use it, at least not until an update has been published.