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 :

Répérage d'une ligne dans un fichier


Sujet :

Shell et commandes GNU

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 31
    Par défaut Répérage d'une ligne dans un fichier
    Bonjour,

    Je m'excuse si un tel problème à déjà été évoqué mais mes recherches sur le forum n'ont rien donné.

    Voici mon problème :

    Je voudrais, via un script, dans un fichier, repérer le numéro de la ligne qui suit celle commençant par une chaîne de caractère donnée et la modifier (sans toucher au reste du fichier bien sûr).

    Par exemple, si je cherche la ligne qui suit la ligne commençant par "record" et que celle-ci est à la ligne 345, je désire obtenir 346. Je désire ensuite remplacer cette ligne par une autre chaine quelconque...

    Merci d'avance de votre aide,

    nicolas823

  2. #2
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Voici une façon de le faire avec awk:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '/^record/ {print;getline;$0="autre chaine quelconque";} 1 ' fichier > fichier1

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Voici une façon de le faire avec sed :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i.bak '/motif/n;cAUTRE CHOSE' fichier

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 31
    Par défaut
    Déjà, merci pour vos réponses, mais vos propositions ne correspondent pas à ce que je veux faire.

    Cependant j'ai trouvé un moyen pour me débrouiller mais suis confronté à une erreur de syntaxe en utilisant la commande sed :

    Je désire remplacer une ligne dans un fichier sans toucher au reste, de façon similaire a ce que ferait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '12c'$parametre fichier.txt
    ...si on voulait modifier la ligne 12. Sauf que mon numéro de ligne est dans une variable, je voulais donc utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i  '${variable}c'$parametre fichier.txt
    (ce que je croyais être correct, mais j'ai une erreur en retour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: -e expression n°1, caractère 2: caractères inutiles après la commande
    ...

  5. #5
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par nicolas823 Voir le message
    Déjà, merci pour vos réponses, mais vos propositions ne correspondent pas à ce que je veux faire.
    Les deux propositions correspondent à ce que tu as demandé. Si tu veux autre chose, le mieux serait de l'expliquer clairement.
    ...si on voulait modifier la ligne 12. Sauf que mon numéro de ligne est dans une variable, je voulais donc utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i  '${variable}c'$parametre fichier.txt
    (ce que je croyais être correct, mais j'ai une erreur en retour :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed: -e expression n°1, caractère 2: caractères inutiles après la commande
    ...
    Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i  "${variable}c$parametre" fichier.txt

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 672
    Par défaut
    pourquoi vouloir multiplier les commandes plutôt qu'avec une seule commande ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i  "${variable}c$parametre" fichier.txt
    Pas mieux

    Par contre petit conseil : l'option -i de sed mieux vaut s'en servir qu'une fois qu'on est sûr du résultat

  8. #8
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 31
    Par défaut
    Parfait. Merci

  9. #9
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Pas mieux
    Hmm, et pourquoi donc ? ...
    Par contre petit conseil : l'option -i de sed mieux vaut s'en servir qu'une fois qu'on est sûr du résultat
    Ou mieux, faire comme moi et ne jamais utiliser l'option -i de sed

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Hmm, et pourquoi donc ? ...
    Because of that : sed '"{variable}"'c'"${parametre}"' fichier.txt

  11. #11
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Because of that : sed '"{variable}"'c'"${parametre}"' fichier.txt
    ??

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

Discussions similaires

  1. [FSO] Effacer une ligne dans un fichier
    Par Johnbob dans le forum ASP
    Réponses: 4
    Dernier message: 30/05/2007, 16h23
  2. Changer une ligne dans un fichier
    Par peuf23 dans le forum Langage
    Réponses: 9
    Dernier message: 03/08/2005, 16h43
  3. [VBA] insérer une ligne dans un fichier excel
    Par cokinoumasterflash dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/07/2005, 18h52
  4. [langage] Effacer une ligne dans un fichier
    Par sebi77 dans le forum Langage
    Réponses: 2
    Dernier message: 01/01/2005, 12h43
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 10h30

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