Sto provando a leggere un file di testo riga per riga usando Shell Scripting. Quello che ho fatto èLeggere un file di testo riga per riga e controllare se quella linea ha una certa stringa
while read line
do
var1=$(grep -s "Completed" $line)
var2=$(grep -s "Script Finished" $line)
if[ "$var1" = "$line" ]
break
else
if[ "$var2" = "$line" ]
count='expr $count + 1'
else
countinue
fi
fi
done < file.txt
Se avete qualche suggerimento fatemelo sapere! Sono aperto ad altre opzioni perché ho cercato di farlo in questo modo troppo a lungo.
per chiarire:
sto attraversando un file riga per riga (while) allora sono grep che la linea per vedere se "Completato" è una stringa e grep per vedere se "Script finito" è una sottostringa (Grep imposterà la variabile sull'intera riga). Quindi, quando eseguo i controlli se la variabile è completata, voglio uscire dal ciclo while se non controllo se "Script Finished" è una sottostringa in modo da poter incrementare un contatore (sto cercando di contare quanti script sono stati completati prima di " Completare").
CIRCA CONFUSO:
quando faccio var1 = $ (grep -s "Completato" $ line) perché lo fa trovare tutte le istanze di Completato ... Ho pensato che se im passando riga per riga esso troverà solo le istanze in quella determinata linea.
EDIT:
ho usato la risposta awk di seguito. Tutto quello che dovevo fare è rimuovere l'istruzione {next} e funziona perfettamente.
Grazie
Cosa stai cercando di ottenere con questo? Potresti fornire qualche informazione al riguardo? –
Sì, certo, mi scuso. Sto cercando di passare attraverso un file che elenca quando vengono eseguiti gli script. Quindi mi interessa solo se uno script è finito .. se è finito, incrementerò il contatore. Tuttavia, gli script vengono eseguiti in blocchi .. mattina pomeriggio e notte. Quindi sto rompendo il ciclo con "blah blah" (Script completati) perché quella sarà la quantità di script finita al mattino – Alan
Avrai un tempo molto più facile sia nel fare ciò che trovare risorse rilevanti se non provi a fare tutto in una volta, e invece concentrarsi sul rendere le singole parti di lavoro. Ad esempio, dovresti definire due stringhe 'a =" ciao mondo "b =" panda "' e provare a scrivere un'istruzione if che li confronta (e quindi impostare 'b = $ a' per assicurare che i casi sia positivi che negativi funzionino). È molto più semplice google "come faccio a confrontare le stringhe in uno script di shell" rispetto a "come faccio a leggere un file di testo riga per riga controllando se quella linea ha una determinata stringa". –