I'm attempting to sort a csv on my machine, but I seem to be erasing the contents each time I use the sort command. I've basically created a copy of my csv lacking the first row:
sed '1d' original.csv > newcopy.csv
To confirm that my new copy exists lacking the first row I can check with head:
head 1 newcopy.csv
Sure enough, it finds my file and shows me the original second now (now first row). My csv consists of numerous values seperated by commas:
Jonathan Sampson,,,,
[email protected],,,GA,United
States,,
Jane Doe,Mrs,,,
[email protected],,,FL,United
States,32501,
As indicated above, some fields are empty. I want to sort based upon the email address field, which is either 4, or 5 - depending on whether the sort command uses a zero-based index. So I'm trying the following:
sort -t, +4 -5 newcopy.csv > newcopy.csv
So I'm using -t, to indicate that my fields are terminated by the comma, rather than a space. I'm not sure if +4 -5 actually sorts on the email field or not - I could use some help here. And then newcopy.csv > newcopy.csv to overwrite the original file with new sort results.
After I do this, if I try to read in the first line:
head 1 newcopy.csv
I get the following error:
head: cannot open `1' for reading: No such file or directory == newcopy.csv <==
Sure enough, if I check my directory the file is now empty, and 0 bytes.