Bash: trouve et remplace une ligne dans un .sh

marco -  
zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonsoir à tous,

J'ai un script qui tourne en while infini sur des serveurs distants, et un script2 qui re-initialise le script 1 régulièrement.

J'ai une modif a faire dans le script 1 et remplacer cette ligne
awk '/link down/ { print $1,$2,$3,$8,$12,$13,$14,$15 }' /var/log/syslog > /home/test/pblink.log

Par la même mais avec des $+chiffre différents. En fait, selon les machines, le matching se décale et du coup j'ai du garbage dans mon log.

L'exercice consiste à lancer un script qui trouve cette ligne et la remplace par une nouvelle ligne que je rentre.

Merci pour votre aide
Bon Weekend

3 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    Salut,

    $ cat plop 
    J'ai une modif a faire dans le script 1 et remplacer cette ligne
    awk '/link down/ { print $1,$2,$3,$8,$12,$13,$14,$15 }' /var/log/syslog > /home/test/pblink.log
    
    Par la même mais avec des $+chiffre différents. En fait, selon les machines, le matching se décale et du coup j'ai du garbage dans mon log. 
    
    $ var='$1,$3,$9,$10,$18'
    
    $ sed -i.bak '\#^awk '\''/link down/#{s/$[^}]*/'"${var}"' /}' plop
    
    $ cat plop 
    J'ai une modif a faire dans le script 1 et remplacer cette ligne
    awk '/link down/ { print $1,$3,$9,$10,$18 }' /var/log/syslog > /home/test/pblink.log
    
    Par la même mais avec des $+chiffre différents. En fait, selon les machines, le matching se décale et du coup j'ai du garbage dans mon log. 
    
    $

    ;-))
    0
  2. marco
     
    Hello Zipe31,

    Juste une petite question pour bien comprendre
    Qu'est-ce que plop et -i.bak ?

    Merci
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      "plop" c'est le nom de MON fichier pour tester ;-)

      Le "-i.bak" est spécial à sed.
      - Le "-i" permet de modifier le fichier "en-place", ce qui permet de faire une modif directement dans un fichier sans avoir à passer par un fichier temporaire.
      - Le ".bak" permet de faire une copie dudit fichier au cas ou. Il sera renommé en "nom_fichier.bak"
      0
  3. marco
     
    Merci pour cet eclaircissement, je comprends mieux
    Par contre cela ne modifie pas mon fichier si je tape en ligne de commande les 2 commandes.
    Quand je fais un diff entre le fichier.sh et le bak, je n'ai pas de changement.

    C'est peut etre parce que le script est lancé.

    Qu'en penses tu?
    Merci
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      C'est fort possible ;-\

      Déjà testes sur une copie de ton script non lancé et vois si les changements se font...
      0
    2. marco
       
      ok j'essaie lundi et te tiens informé. Merci pour ton aide.
      Bon weekend
      0
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      De rien, pareillement ;-)
      0