Echo Komutu İle Dosya Değiştirme

Başlatan JavS, 10 Mayıs 2018 - 23:13:55

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

JavS

Öncelikle İyi Forumlar Arkadaşlar Bi Script Yapıyorum Ancak Yaptığım Scripte echo ile .ini ve cfg dosyalarının içindeki Yerleri read ile yazılan İle Değitirmek İstiyorum

clear
            echo -e "${sari}Port:"
            read port
            cd /opt/
mkdir board_$port

echo "ListenHost=$port" >> /opt/board_$port/config.ini

Bunu Yazıyorum Ancak Yazılan Şeyi Dosyanın Sonuna Yazıyor Bunu Nasıl İstenilen ListenHost=  Bunun Karşısına Direk Port Olarak Yazdırabilirim ?

nebula

>> yönlendirmesi dosyanın sonuna yaz anlamı taşır.
Dosya içeriğini bahsettiğiniz gibi değiştirebilemek için önce değiştirmek isteyeceğiz şeyi bulan sonra da değiştirme yeteneği olan bir şey kullanmalısınız.
Bunun değişken işlemleri marifeti ile de kodlanabilir olduğunu düşünmekle birlikte, oldukça karmaşık ve kaba syntax'ta olduğunu hatırlıyorum. 
ben olsam sed uygulamasını kullanırdım. (Muhtemelen default olarak sisteminizde yüklüdür.)
...
Kendi kendimizle yarışmadayız, gülüm.
Ya ölü yıldızlara hayatı götüreceğiz,
Ya dünyamıza inecek ölüm. -N.H.R.-

mhmtkrktr

Aynı olan tüm kelimeler değiştirilecekse;
sed -i 's/değiştirilecek kelime/yeni kelime/' /yol/dosya

Dosya içinde aynı kelimeden birden çok var ve sadece satır numarası bilinen kelime değiştirilecekse; (örn : kelime 3. satırda bulunuyorsa)
sed -i '3s/değiştirilecek kelime/yeni kelime/' /yol/dosya

Dosya içinde aynı kelimeden birden çok var fakat satır numarası bilinmiyor ama değişecek kelimenin tekrar eden kaçıncı kelime olduğu biliniyorsa; (örn: tekrar eden 4. kelime için)
sed -i ':a;N;$!ba; s/değiştirilecek kelime/yeni kelime/4' /yol/dosya

Kelimeyi bir değişken temsil edecekse; (yukardaki durumlar içinde geçerli)
sed -i "s/değiştirilecek kelime/$değişken/" /yol/dosya

Sed kullanımında kelimeleri ayıran seperotörler ile kelimenin içinde bulunan terimler aynı ise terimin seperator olmadığını belirtmek amacı ile ters slash kullanılabilir.
sed -i "s/\/home\/user/yeni kelime/" /yol/dosya

Veya seperator değiştirilebilir. , % | gibi. Genellikle değişken içinde ters slash oluşturulamayacağı için bu yöntem kullanılır.
sed -i "s%değişken1%$değişken2%" /yol/dosya





JavS

Alıntı yapılan: JavS - 10 Mayıs 2018 - 23:13:55
Öncelikle İyi Forumlar Arkadaşlar Bi Script Yapıyorum Ancak Yaptığım Scripte echo ile .ini ve cfg dosyalarının içindeki Yerleri read ile yazılan İle Değitirmek İstiyorum

clear
            echo -e "${sari}Port:"
            read port
            cd /opt/
mkdir board_$port

echo "ListenHost=$port" >> /opt/board_$port/config.ini

Bunu Yazıyorum Ancak Yazılan Şeyi Dosyanın Sonuna Yazıyor Bunu Nasıl İstenilen ListenHost=  Bunun Karşısına Direk Port Olarak Yazdırabilirim ?