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

  1. #1
    Membre du Club
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Points : 64
    Points
    64
    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 éclairé 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
    Points : 652
    Points
    652
    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
    Loi de Murphy:
    La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi.
    La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi.
    Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi.

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