[Çözüldü] while ile sed kullanimi

Başlatan barisyilmaz78, 22 Haziran 2012 - 11:49:22

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

barisyilmaz78

Merhaba arkadaslar     

Bir dosyanin icinde olan satirlari döngü icinde degiskene atamak istiyorum.
Asagidaki gibi birsey yaptim ama   such=$(sed -n '$ilk_satir p' ~/Station_al.txt) kodunda sorun var. Eksik ya da hata olan nedir?

Tesekkürler..

        ilk_satir=0
        son_satir=$(cat ~/Station_al.txt | wc -l)       
        echo "son satir  = $son_satir"
        echo ""
        echo ""
        while [ $ilk_satir -lt $son_satir ]
          do
                ilk_satir=$(( $ilk_satir + 1 ))
                echo "ilk satir = $ilk_satir"
                echo ""
                such=$(sed -n '"$ilk_satir" p' ~/Station_al.txt)
                /home/yilmaz/by/meinalarmliste_2 "$such"
                #ilk_satir=$(( $ilk_satir + 1 ))
          done


Düzenleme Notu: Komut ve çıktılar için [code][/code] etiketi kullanın.

ironic

Merhaba, sed sorunu değişkenin (yani ilk_satir) sed ortamına aktarımı tek tırnaklar arasında yapıldığı için yorumlama yapılmadan(gerçek değeri yerine koyulmadan) aktarıldığından kaynaklanıyor.

çift tırnakları tercih edersek sorun çözülecektir.

sed -n "$ilk_satir p" ....

Ayrıca son_satir değişkeni için gereksiz yere cat kullanımı yerine wc komutuna dosyayı girdi olarak şu şekilde verebiliriz.

wc -l < ~/Station_al.txt

konuyla ilgili aşağıdaki bağlantıya da bakabilirsiniz.

https://en.wikipedia.org/wiki/Cat_(Unix)#Useless_use_of_cat

barisyilmaz78

#2
Tesekkür ederim ..
wc -l < ~/Station_al.txt  icin ayrica tesekkür ederim bilmiyordum..

Düzenleme Notu: Komut ve çıktıları için [code][/code] etiketi kullanın.