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

Linux Discussion :

Problème pour mettre à jour une ligne d'un fichier.


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut Problème pour mettre à jour une ligne d'un fichier.
    Bonjour,

    J'ai un fichier texte de la forme :

    dbase :
    Paris 200 5
    Londres 300 15
    Rome 250 9
    Madrid 225 1

    J'essaye d'incrementer le 5 sur la ligne de Paris par exemple a chaque execution du programme :

    J'arrive a acceder a la valeur, mais j'arrive pas a faire la modification au sein du fichier.

    Merci de votre aide.

    Voila ce que j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
     
    reserv=$(cat dbase | grep "Paris" | cut -d " " -f3)
    echo $reserv
    let new_reserv=reserv+1
    sed  "s/${reserv}/${new_reserv}/g" dbase | grep "Paris" | cut -d " " -f3
    cat dbase

  2. #2
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Citation Envoyé par gregb34
    Bonjour,

    J'ai un fichier texte de la forme :

    dbase :
    Paris 200 5
    Londres 300 15
    Rome 250 9
    Madrid 225 1

    J'essaye d'incrementer le 5 sur la ligne de Paris par exemple a chaque execution du programme :

    Remplacer :
    sed "s/${reserv}/${new_reserv}/g" dbase | grep "Paris" | cut -d " " -f3
    par
    sed -i "/^Paris/s/ ${reserv}\$/ ${new_reserv}/" dbase


    Ou alors en awk
    http://lea-linux.org/cached/index/Dev-awk.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    awk '
    {
    	if ($1 == "Paris") {
    		$3=$3+1
    	}
    	print $0
    }' dbase > tmp
    mv tmp dbase

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/04/2009, 15h03
  2. Problème pour mettre à jour une table SQL
    Par Bes74 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 27/03/2009, 20h21
  3. Réponses: 14
    Dernier message: 15/01/2009, 09h54
  4. Réponses: 2
    Dernier message: 06/04/2006, 21h18
  5. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56

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