2013-07-19 4 views
6

voglio aggiungere la seguente riga:linea metti in un file solo se non è già nel file di

nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null & 

alla fine del file /etc/rc.d/rc.local se non esiste già.

Come posso farlo dalla riga di comando linux? Presumo che grep o sed funzionerebbero, ma non ho abbastanza familiarità con nessuno dei due per farlo funzionare. In questo momento io uso echo, ma questo continua a aggiungerlo più e più volte.

+0

Cordiali saluti, questo è effettivamente un duplicato di [Aggiunta di una linea a un file solo se si pretende molto esistono già. Usando Sed?] (Http://stackoverflow.com/questions/3557037/appending-a-line-to-a-file-only-if-it-doesnt-already-exist-using-sed) – DuffJ

risposta

12

supponendo che si desidera alla fine del file:

LINE="nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null &" 
FILE=/etc/rc.d/rc.local 
grep -q "$LINE" "$FILE" || echo "$LINE" >> "$FILE" 
2

una possibilità è due fasi:

grep -q "yourline" /path/file||sed -i '/..place../ a \the line' file 

anche possibile fare con awk,

salvare tutte le linee di matrice, durante la memorizzazione se la linea è stata trovata, uscita. altrimenti, aggiungi la riga nel blocco END{} nel posto giusto.

P.S. Non hai detto nel file, dove aggiungere quella linea.

+0

+1 per un soluzione più pulita della mia. Penso che voglia solo aggiungerlo. –

+0

Dice che attualmente usa 'echo' quindi sarà l'ultimo (segno di dollaro in' sed'). – Birei

+0

Potrei suggerire di fare in modo che il bit 'grep' dica' grep -qb ... ', nel caso in cui ... – twalberg