Monday, August 3, 2009

sed'e değişken aktarmak, if'in çoklu kullanımı, tar'ın farklı kullanımı

Aşağıdaki script farklı dizinlerde oldtarih datası olup olmadığını kontrol eder, eğer varsa listesini bir dosyaya
yazar ve bu dosyadaki dosya isimlerinin tar 'ını alır. Dosya sayısı bir-kaç binden fazlaysa tar almak için tar -T opsiyonu kullanmak iyidir. Aksi durumda "argument list too long" hatası alınır.

for uydutip in EOS RESIM MPEF NOAA ; do
oldtarih=20090729
ls $uydutip|grep $oldtarih >/dev/null 2>&1
if [ $? -eq 0 ] ; then
ls $uydutip|grep $oldtarih|awk '{print $0}'|sed "s:^.:$uydutip\/&:g" >$fulpat/loglar/$uydutip.list
if [ "$uydutip" = "EOS" -o "$uydutip" = "MPEF" -o "$uydutip" = "NOAA" ] ; then
tar -czvf $uydutip.$oldtarih.tar.gz -T $fulpat/loglar/$uydutip.list
else
tar -cvf $uydutip.$oldtarih.tar -T $fulpat/loglar/$uydutip.list
fi
else
echo "$uydutip - $oldtarih tarihli data YOK ..--"
fi
done

Thursday, June 11, 2009

kolon toplamının bulunması

linux dosya sisteminde dosyaların toplam boyutu aşağıdaki gibi bulunabilir;

ls -l |awk '{print $5}'|awk '{sum=sum+$NF;print sum}'

Monday, June 8, 2009

Bir veri satırında istediğimiz kolona sabit eklemek;

data verisinin 5.ci kolonuna | (pipe) ekler;

sed 's/^.\{5\}/&|/' data > data.new

Wednesday, May 27, 2009

4 ay önceki yil ve ayı bulmak;

#!/bin/bash
# Bu script 4 ay onceki yil ve ayi hesaplar
#

yil=`date +%Y`
ay=`date +%m`
geriay=4

#echo $yil $ay
((olday=ay-geriay))
case $olday in
0)
((yil=yil-1))
olday=12
;;
-1)
((yil=yil-1))
olday=11
;;
-2)
((yil=yil-1))
olday=10
;;
-3)
((yil=yil-1))
olday=9
;;
esac
if [[ $olday -lt 10 ]] ; then
olday=0${olday}
fi
echo $yil $olday

Monday, May 25, 2009

ayın maksimum gününü bulmak için;


yil=2009
ay=02
echo "`date` - MODEL - ECB Arsivleme Calisacak..."
maxgun=`cal $ay $yil | grep . | fmt -1 | tail -1`
echo $maxgun

Wednesday, May 20, 2009

shell script'te string kontrolü yapmak için;

alttip=`echo "${shttip:0:2}"`
if [[ $alttip == "MD" ]] ; then
echo "MD dosyasi"
else
wcho "farkli dosya"
fi

önemli not: string'in ilk elemanı 0 (sıfır) olarak başlar.
0:2 ; ilk iki karakteri alır.