I have a huge text file, far too big for the whole thing to be paged into memory. All I need to do with this text file is edit the first line (its a CSV file and I need to alter the titles).
Is there a simple way I can do this in bash?
Super User is a question and answer site for computer enthusiasts and power users. It only takes a minute to sign up.Sign up to join this community
You can use
less to see what you want to edit and use
sed to make the changes. This way you edit without loading the entire file.
Another way is to split the file, edit and join again:
split -b 10000k <file> and to join: cat xa* > <file>
If your modification changes the length of the line, the whole file needs to be re-written, see for example this discussion on SO. You should probably consider saving the data to a database.
Keeping that in mind, you can stream edit the file with sed. To replace the first line, do something like this (GNU sed):
< oldfile sed '1c\new_heading' > newfile