2013-07-19 20 views
6

Ben aşağıdaki satırı eklemek istiyorum.eklenti hattı zaten

Bunu linux komut satırından nasıl yapabilirim? grep veya sed çalışacağını varsayalım, ama işe yarayacak kadar tanıdık değilim. Şu anda echo kullanıyorum, ancak tekrar tekrar eklemeye devam ediyor.

Awk ile yapmak mümkün de
grep -q "yourline" /path/file||sed -i '/..place../ a \the line' file 

,

hattı, çıkış buldu olsaydı tasarrufu sırasında, dizideki tüm satırları kaydedin:

+0

Bilginize, bu etkili [zaten doesnt mevcut SADECE eğer bir dosyaya bir satır ekleme kopyasıdır. Sed Kullanarak?] (Http://stackoverflow.com/questions/3557037/appending-a-line-to-a-file-only-if-it-doesnt-already-exist-using-sed) – DuffJ

cevap

12

Eğer dosyanın sonuna istiyorum varsayarsak:

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

bir seçenek iki adımlık mesafededir. aksi halde satırı END{} satırına doğru yere ekleyin.

P.S. Dosyada, bu satırı nereye ekleyeceğinizi söylemediniz.

+0

+1 benimkinden daha temiz bir çözüm. Sanırım sadece eklemek istiyor. –

+0

Halihazırda “echo” kelimesini kullandığını söylüyor, yani sonuncusu olacak ("sed'teki dolar işareti"). – Birei

+0

“grep” kelimesinin “grep -qb…” demesini öneriyorum, sadece durumda… – twalberg