web-dev-qa-db-fra.com

Script Unix pour supprimer la première ligne d'un fichier CSV

J'ai dit avant que je ne suis pas très bon en script, donc ce que j'ai ci-dessous copie les fichiers d'un répertoire de partage dans le mien où je change leurs autorisations. Mais ensuite, je voulais supprimer la première ligne de chacun des fichiers CSV - les en-têtes - et je voulais que cela s'exécute toutes les heures.

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

* insérer supprimer la première ligne csv ici *

Quelqu'un peut-il m'aider à supprimer la première ligne du fichier CSV et à l'exécuter automatiquement toutes les heures, par exemple, ou à me diriger vers quelque chose que je pourrais comprendre pour le résoudre?

31
Zenaphor

Vous pouvez supprimer la première ligne d'un fichier en utilisant sed:

sed -i '' 1d file.csv

Si vous voulez simplement obtenir le contenu du fichier sans la première ligne et sans modifier le fichier, supprimez le -i '' drapeau:

sed 1d file.csv

Voici 1d la commande à exécuter:

  • 1 => ligne où agir
  • d => supprimer

Donc 1d signifie 'supprimer la ligne 1'

Si vous souhaitez obtenir la première ligne, vous pouvez également utiliser sed:

sed -n 1p file.csv

Ici p signifie 'print' ou

sed 1q file.csv

(voir le commentaire de William Pursell)

82

En cherchant cette réponse, j'ai également trouvé cet autre fil. Là, ils disent utiliser la queue, qui ne fait pas de modifications, ce que l'OP voulait. Vous pouvez bien sûr copier dans un fichier temporaire. De plus, si vous deviez diffuser les fichiers dans un autre outil, vous pourriez utiliser 'tail' dans un canal et ne jamais avoir à écrire de fichiers temporaires ou à écrire sur le disque.

Comment puis-je supprimer la première ligne d'un fichier texte en utilisant le script bash/sed?

1
Andrew Mellinger