Bash: trouve et remplace une ligne dans un .sh

Fermé
marco - 12 avril 2013 à 17:52
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 12 avril 2013 à 18:53
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
A voir également:

3 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 avril 2013 à 18:11
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
Hello Zipe31,

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

Merci
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 avril 2013 à 18:30
"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
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 avril 2013 à 18:48
C'est fort possible ;-\

Déjà testes sur une copie de ton script non lancé et vois si les changements se font...
0
ok j'essaie lundi et te tiens informé. Merci pour ton aide.
Bon weekend
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
12 avril 2013 à 18:53
De rien, pareillement ;-)
0