On Sat, Nov 28, 2009 at 01:42:28PM +0200, Engin Yüce wrote:
> Amacım bir bash script ile bir dosyada aradığım bir satırın olup olmadığını
> bulmak ve bu satırı değiştirmek, silmek, üzerine veya altına bir satır
> eklemek.

if /bin/grep "aranan_text" $datafile > /dev/null 2>&1
then
    # text varsa komutlar
else
    # text yoksa komutlar
fi

> Aynı zamanda, bir dosyada aradığım bir satır yok ise o dosyanın sondan bir
> önceki satırına birşeyler nasıl girebilirim?

# obtain lock for datafile
#

# create temp file
tempfile=$(/usr/bin/mktemp)

sonbir="" ; soniki="" ; ekle="text"

exec 4>&1
exec 1>$tempfile
exec 3>&0
exec 0<$datafile
while read eachline
do
soniki=$sonbir
sonbir=$eachline
if [ $soniki ] ; then echo "$soniki" ; fi
done
if [ $ekle ] ; then echo "$ekle" ; fi
if [ $sonbir ] ; then echo "$sonbir" ; fi
exec 0>&3
exec 1>&4
mv $tempfile $datafile

#release lock
#

Notlar:
* Racey kod yukaridaki.  Datafile'a ellemeden once lock edin.
Degisemesin.
* Sistemde $tempfile kalmamasi icin (programda yarida kaldiginda vs)
exit kodlari trap etmeyi unutmayin.

-- 
Eray
_______________________________________________
Linux E-Posta Listesi
[email protected]
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
http://liste.linux.org.tr/mailman/listinfo/linux

Cevap