2010-07-22 15 views
0

je l'exemple suivant fichiersed + awk + vérifier la ligne dans le fichier

/etc/sysconfig/network/script.sh = -exe $Builder 
    run_installation 123 44 556 4 = run_installation arg1 arg2 arg3 948 
    EXE=somthing 
    EXE somthing 

J'ai trois questions (j'écrire le script bash)

  1. comment vérifier par sed ou awk si la chaîne "-exe" existe après "=" caractère
  2. comment vérifier par sed ou awk si la chaîne run_installation existe dans le premier de la ligne (le premier mot de la ligne) et après le caractère "=" comme exemple ci-dessous (fichier)

  3. le fichier EXE de chaîne dans le fichier peut être "EXE" ou "EXE =", comment supprimer par sed le fichier EXE ou EXE =

    je:

    sed s'/EXE//g' | sed s'/EXE=//g' 
    

    mais son chemin pas agréable à faire dans mon script bash

• Je besoin de trois réponses différentes!

Lidia

Répondre

0

vous n'avez pas donné d'autres critères sur ce qu'il faut faire si les conditions 1 et 2 ne sont pas trouvés ...

awk '/=.*-exe/{f=1;} 
/^run_installation.*=.*run_installation/{g=1} 
/^EXE/{ gsub(/EXE=|EXE/,"") } 
f && g{ print "ok" ;exit } 
' file 

Les contrôles de code ci-dessus pour la condition 1 et condition 2 et imprimer " ok "quand les deux sont trouvés. La substitution de EXE pour la condition 3 est ajoutée à des fins d'illustration. État plus clairement ce que vous voulez faire et montrer votre prévu la sortie prochaine

Pour les vérifier séparément,

awk '/= -exe/{print "found"}' file 
awk '/^run_installation.*=.*run_installation/{print "found"}' file 
+0

désolé son devrait y avoir trois réponses pas tous les cas sur une réponse – lidia

+0

pouvez-vous s'il vous plaît modifier à nouveau comme différent trois réponses – lidia

+0

quoi 3 réponses? Je ne comprends pas. Toutes vos conditions peuvent être faites avec seulement 1 processus awk. Définissez et expliquez clairement ce que vous voulez faire, avec des exemples d'échantillons d'entrée et de sortie. – ghostdog74

Questions connexes