问题
I've stated before I'm not very good at scripting so what I have below copies files from a share directory to mine where I change their permissions. But then I wanted to remove the first line in each of the CSV files — the headings — and then I wanted to get this to run every hour.
cd /users
scp dehpc14_Disk_Quota_Report.csv /h/u544835
scp dehpc14_User_Disk_Usage.csv /h/u544835
cd /h/u544835
chmod 755 dehpc14_Disk_Quota_Report.csv
chmod 755 dehpc14_User_Disk_Usage.csv
* insert delete csv first line here *
Can anyone help me with deleting the first line of the CSV file and getting this to run automatically every hour, for example, or direct me to something I might understand to get cracking with it?
回答1:
You can delete the first line of a file using sed
:
sed -i '' 1d file.csv
If you just want to get the contents of the file without the first line, and without modifying the file, remove the -i ''
flag:
sed 1d file.csv
Here 1d is the command to execute:
- 1 => line where to act
- d => delete
So 1d means 'delete line 1'
If you want to get the first line, you can use sed too:
sed -n 1p file.csv
Here p stands for 'print' or
sed 1q file.csv
(see William Pursell's comment)
回答2:
While looking for this answer I also found this other thread. There they say use tail, which doesn't actually make an modifications which is what the OP wanted. You could over course copy to a temporary file. Additionally, if you were going to stream the files into another tool, you could use 'tail' in a pipe and never have to write temporary files or write to disk.
How can I remove the first line of a text file using bash/sed script?
回答3:
I tried to delete the first row from a CSV, cd into the location and then the answer to the question didn't work for me, was getting
sed: can't read 1d: No such file or directory
So, I've used the following stated here by @amit
sed -i '1d' filename.csv
来源:https://stackoverflow.com/questions/9633114/unix-script-to-remove-the-first-line-of-a-csv-file