IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Modification ligne avec la commande SED


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Points : 21
    Points
    21
    Par défaut Modification ligne avec la commande SED
    Bonsoir,

    voilà j'ai passé toute mon après midi à chercher une commande me permettant de modifier une centaine de fichiers CSV à la volé et je n'arrive pas à trouver de solution...

    Je souhaite faire une commande me permettant d'annuler le retour à la ligne si la ligne en question ne se termine pas par " (double quote), dernièrement j'ai essayé cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -name "*.csv" -type f -exec sed -i 's/["\n^]/ /g' {} \;
    Mais en fait ça ne fait que supprimer les " alors que ce n'est pas le but ^^.

    Donc si quelqu'un veut bien m'apporter son aide je suis preneur !

    Merci !

  2. #2
    Membre averti Avatar de Neolex
    Homme Profil pro
    Recherche emploi Securité informatique
    Inscrit en
    Avril 2011
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Recherche emploi Securité informatique

    Informations forums :
    Inscription : Avril 2011
    Messages : 243
    Points : 333
    Points
    333
    Par défaut
    Pour sed je ne sais pas , mais si tu n'as pas à tout pris besoin de le faire avec sed je crois que ceci fonctionnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{if ($0 !~ /[\",]$/ ){printf $0" "} else print}'  file

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 552
    Points : 19 392
    Points
    19 392
    Par défaut
    Bonjour,

    si je résume :

    quand une ligne ne se termine pas par " :
    tu veux supprimer le retour chariot entre le " et le début de la ligne suivante :
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 35
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par Neolex Voir le message
    Pour sed je ne sais pas , mais si tu n'as pas à tout pris besoin de le faire avec sed je crois que ceci fonctionnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '{if ($0 !~ /[\",]$/ ){printf $0" "} else print}'  file
    Salut Neolex, merci pour ton aide mais malheureusement ça n'a pas fonctionné !

    Citation Envoyé par N_BaH Voir le message
    Bonjour,

    si je résume :

    quand une ligne ne se termine pas par " :
    tu veux supprimer le retour chariot entre le " et le début de la ligne suivante :
    Merci N_BaH ! Ca fonctionne ! J'aurais dû venir plus tôt ^^

    Bonne soirée à tous !

  5. #5
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Bonjour

    Si j'osais, je rajouterais même une étiquette ':z' et un saut conditionnel au cas où la ligne s'étende sur plus de deux lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed ':z;/"$/! {N; s/\n//}; t z;'
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed ':z;N;/"$/!b z; s/\n//g}'
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Joindre des lignes avec des commandes shell
    Par sab113 dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 30/04/2013, 01h32
  2. [Batch] Gestion de lignes vide avec la commande sed
    Par DeVit dans le forum Scripts/Batch
    Réponses: 18
    Dernier message: 20/10/2009, 19h06
  3. remplacer une ligne contenant / avec la commande sed
    Par GoldenEyes dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 11/09/2009, 18h38
  4. Afficher les lignes désirées avec la commande awk
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/06/2007, 20h58
  5. Comment aller a la ligne avec la commande ECHO
    Par juflata dans le forum Windows
    Réponses: 3
    Dernier message: 23/06/2004, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo