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 :

Remplacer ou ajouter une ligne dans un fichier


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut Remplacer ou ajouter une ligne dans un fichier
    Bonjour,

    Je voudrais forcer une ligne spéciale dans un fichier ou, si elle n'existe pas, l'ajouter. Je le fais pour l'instant de manière "verbeuse", mais existe-t-il un truc en une commande? Voici ce que je fais actuellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    newLine='xyz...'
    sel='xyz'
    if grep ^$sel fichier
    then
      sed -i "s/^$sel.*/$newLine/" fichier
    else
      echo "$line" >> fichier
    fi
    J'ai supprimé tous les détails inutiles du code...

  2. #2
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Par défaut
    Salut,

    Teste ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sed '/^$sel/ s/^$sel.*/$newLine/g' fichier || echo "$line" >> fichier
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  3. #3
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Merci Winnt pour ta réponse.

    Mais plusieurs remarques:

    • J'imagine qu'il faut des double-quotes " plutôt que des simples ', parce que sinon les $x ne sont pas remplacés par leurs valeurs respectives.
    • La commande sed renvoie toujours 0 lorsque son fonctionnement est correct, qu'il y ait eu des sélections ou non. Donc le ou logique || ne sera jamais parcouru. La commande grep, elle, retourne 1 lorsque rien n'est trouvé.

    J'ai pourtant l'impression que sed peut aider. Au mieux, j'ai un awk, qui supprime en plus les lignes multiples:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk -v l=$line -v s=$sel '{if ($1 == s) {if (ok != 1) {print l; ok = 1}} else {print}}' fichier > fichier.nouveau

  4. #4
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Par défaut
    Salut jmelyn,

    Remarques pertinentes en effet.
    A ma décharge je suis au boulot et pas linux sous la main.
    Je regarderai ce soir, si j'ai le temps, pour te proposer une solution
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  5. #5
    Membre émérite Avatar de jmelyn
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2007
    Messages
    703
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Septembre 2007
    Messages : 703
    Par défaut
    Hein? Quoi? Comment? Plait-il? Mais comment peut-on travailler sans Linux?

    À c'soir...

    PS: avec Linux allumé à la maison, une adresse dynDNS qui va bien, le port 22 ouvert dans le firewall, le service fail2ban qui tourne, il est tout-à-fait possible de s'y connecter depuis le boulot ...

  6. #6
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Par défaut
    @jmelyn
    Sans doute mais pour installer ce qu'il faut sur le poste windows j'ai besoin d'être administrateur du poste ce que je ne suis pas
    C'est dur la vie de simple grouillot de base dans une administration
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 135
    Par défaut
    Citation Envoyé par Winnt Voir le message
    Salut jmelyn,

    Remarques pertinentes en effet.
    A ma décharge je suis au boulot et pas linux sous la main.
    Je regarderai ce soir, si j'ai le temps, pour te proposer une solution
    Tu peux installer Cygwin sur une clé USB... et tu as toutes les commandes du shell à portée de la main
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Par défaut
    @al1_24

    Mais je suis "censé" bosser au boulot
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

Discussions similaires

  1. ajouter une ligne dans un fichier excel en vb.net 2010
    Par AlexLyon dans le forum VB.NET
    Réponses: 2
    Dernier message: 08/08/2011, 20h35
  2. Ajouter une ligne dans 1000 fichiers HTML
    Par jesuismoi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/11/2010, 18h02
  3. Réponses: 7
    Dernier message: 31/10/2010, 22h29
  4. [DOM]ajouter une ligne dans un fichier xml
    Par aroua dans le forum APIs
    Réponses: 1
    Dernier message: 21/04/2008, 17h25
  5. ajouter une ligne dans un fichier
    Par e-medi dans le forum C
    Réponses: 7
    Dernier message: 21/09/2007, 10h40

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