Search code examples
unixcsvvi

Unix script to remove the first line of a CSV file


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?


Solution

  • 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)