Merhaba
Sorunuz gerçekten yanıtlanması uzun sürecek bir soru. Ayrıca %100 kapsamlı yanıt vermenin gerçekten zor olacağı bir konu. Ben sizin için biraz araştırma yaptım. Bir kaç ingilizce makaleyi birleştirerek Türkçeleştirdim. Bunları sizinle paylaşacağım. Bu makaleleri ayrı ayrı kendi sitemde yayınladım. Alıntı yaparak bunları sizinle paylaşıyorum.Umarım işinize yararlar. Sizde bunları daha geniş bir şekilde parametlerini kullanarak bizimle paylaşırsınız.
Öncelikle sed komutundan başlıyalım.
Alıntı
Merhaba,
sed kodunun basitce kullanimini sizinle paylasacagim. Bunun icin ingilizce bir makaleyi turkceye cevirdim. Size burda verecegim bilgiler temel bilgiler olacaktir. Bunun ekleriyle kullanabilecegimiz bir cok konu vardir. Fakat oncelikle temel olarak girisimizi yapalim. Insallah ileride tamamini ben yada baska bir arkadasimiz paylasir.
Dersimize baslamadan once ornek parcamizi verelim. Ileride bu parca isimize yarayacaktir.Bu parca poem.txt icinde yer alsin.
Ornek Parca :
Mary had a little ham
Mary fried a lot of spam
Jack ate a Spam sandwich
Jill had a ham spamwich

Konunun yogunlasacagi 2 adet komutu sizlere verelim. Asagida aciklanan aslinda bu iki komutun mantigindan ve kullanim alanlarindan baska bir sey degil.
-------------------
Donusturucu sed
 's/eskiparca/yeniparca/g' dosya
Silici sed
 'baslangic,bitisd' dosya
------------------
Donusturucu "sed” ile ilgili alistirma yapalim. Ornek olarak poem.txt dosyamizin icindeki “lamb” kelimesini “hum” ile degistirelim.
Bunun icin asagidaki kodlari inceleyiniz:
sed 's/lamb/ham/g' poem.txt
Kod da verilen “s” nin anlamini cevirici olarak, “g” nin anlamini da evrensel degistirici olarak dusunebiliriz. Ayrıca "g" (her satırın yalnızca ilk olayini değiştirmek için) takisini yazmayabiliriz veya yerine (her satırda ilk X olaylarini değiştirmek için bir sayı belirtebiliriz.).
Simdide silici sed icin biraz alistirma yapalim. Ilk basta size ornek olarak verdigimiz ve baslangic - bitis olarak yazdigimiz terimler aslinda eslesmesi gereken satirlardir.
Hatirlayalim : Silici sed
'baslangic,bitisd' dosya
Ornegin bizim klasik poem.txt mizde 2. Ve 3 satirlari kapsayalan bir silici sed yazalim.
sed '2,3d' poem.txt
Mary had a little lamb
Jill had a lamb spamwich
Bu ornekte ise silici sed 1. Satirdan baslayacak icinde Jack ismi gecen ( o satir ) dahil son satira kadar silecektir.
sed '1,/Jack/d' poem.txt
Bir çok kişi sed komutunu iki değişkeni değiştirmek için kullanır. Fakat ben sed i bazı ifadeleri bulup silmek içinde kullanmak istiyorum. Bunun anlamı siz bunu eşleştirmek içinde kullanabilirsiniz. Grep gibi.Ancak muhtemelen bunun gibi birşey yapmaya gerek olmayacaktir..
Birinci satırdan son satıra kadar "lamp" kelimesini "ham" ile değiştirmek için ve çıktıyı yeni bir dosyaya yazmak için aşağıdaki komutları uygulayınız.
Sonuç çıktısını verene kadar ekranda herhangi bir işlem yapmayınız. Şayet new.file in içeriklerine bakarsanız bu satırları göreceksiniz.
sed 's/lamb$/ham/g' poem.txt > new.file
Saygilarimla...
Abdullah CINAR
Sırada Awk - Print
Alıntı
Merhaba,
Awk kodu aslında programlamada veri dosyalarındaki dil dönüşümleri için kullanılmaktadır. Biz bu metnimizde awk nın " print " ayarlarıyla ilgili yoğunlaşacağız. Aslında kafa karıştırıcı şeyleri awk ile kolayca yapabiliriz .Awk kodunun genel kullanımı :
awk <pattern> '{print <stuff>}' <file>
Bu durumda, stuff metnin kombinasyonu olacaktır. Bu durumda özel değişkenler çıktıda gözükecektir.. Belki bu bir yada iki matematik operatörünün yapabilecekleriyle eşit bir işlem. Açıkcası bu kısım tamamen mantıksız gibi gelebilir. Aslında banada mantıksız gelen bir kısım. Keşke eklemeseydim diye düşünmemiş değilim. Neyse biz örneklere bakalım. Örneklerde emin olun daha iyi anlayacağız. Girişler her zaman saçma olur.
Haydi bir dosya oluşturalım. Adı words.data olsun. Ve içeriği aşağıdaki satırlardan ibaret olsun.
nail hammer wood
pedal foot car
clown pie circus
Dosya içeriğimiz çok düzgün olmadı. Biraz düzenlemeye ihtiyacımız var. Şimdi tam olarak yapmak istediğimiz şey 1. Kelime’nin önüne “Hit the” 1. Kelimenin arkasına ise “with your” eklemek..Kodumuzu veriyorum. İnceleyelim:
awk '{print "Hit the",$1,"with your",$2}' words.data
Bu kodu uyguladıktan sonra tekrar bakalım. Words.data’ya :
Hit the nail with your hammer
Hit the pedal with your foot
Hit the clown with your pie
Şimdi ise bu awk kodunu sayısal olarak kullanımı görelim. grades.data adlı bir dosya oluşturalım. İçine ise aşağıdaki metni yazalım.
Rogers 87 100 95
Lambchop 66 89 76
Barney 12 36 27
Şimdi awk ile yapabileceklerimizi sayısal olarakda görelim aynı zamanda pekiştirmek için ilk derste anlattığımız kelime aralarına kelime eklemeği görelim.
awk '{print "Avg for",$1,"is",($2+$3+$4)/3}' grades.data
çıktı metin:
Avg for Rogers is 94
Avg for Lambchop is 77
Avg for Barney is 25
Biraz daha açıklamak gerekirse “ Avg for “ kelimesini cümlenin başına getirdik. 2. 3. 4. Satırlarını da toplayıp 3 ‘e böldük. Tıpkı bir hesap makinası gibi. Aslında hesaplama scriptlerinde de temel mantık budur.
Şimdiye kadar biz aslında yeterince model görmedik. Fakat Biz satırları bu işlem prosedüründen ayrı tutmak istiyorsak aşağıdaki kodlamayı inceleyelim:
awk /^clown/'{print "See the",$1,"at the",$3}' words.data
See the clown at the circus
Biz burada awk kodunu girdi satırlarıyla inceledik. Ayrıca son bir not print ve pattern arasında boşluk yok. Eğer oraya boşluk koyarsak awk printin çalışmadığını düşünür.Burda size anlatılanın hepsi awk nın temel seviyesidir. Bunun yanına bir çok parametler ekliyerek bu çok daha fazla genişletilebilir. Ancak şimdilik biz temelimizi atalım. İleride inşallah benim veya başka bir bu işle ilgilenen arkadaşın makalesinde daha profesyonel kullanımlarını görürüz.
Saygılarımla…
Abdullah ÇINAR
Ve Son olarak grep. Aslında Grepide kendim hazırlayacaktım. Ancak detaylı bir şekilde güzel bir makale buldum. bu bana ait değildir.
Alıntı
Linux'un en popüler komutu - grep
Unix'in en popüler komutu açık ara "grep"tir.Bazıları bunu tartışsada birkez kullanmaya başladınız mı, bu komut size tanrının bir hediyesi olarak gözükecek. Grep'in açılımı ,büyük bir kesime birşey ifade etmese de, "evrensel düzenli ifade yazıcısı"dır (Global Regular Expression Printer). Daha açıklayıcı olmak gerekirse grep , verilen bir yazıdan belirli kriterler dahilinde parçalar çıkarır. Basitçe , grep bir şablon girmenizi , ardından yine sizin belirleyeceğiniz bir metinde, bu şablona uygun yazıları arar. Belirlenen şablona uygun tüm satırları listeler. Grep iki türlü kullanılabilir - tek başına veya borularla (pipe)
Tek başına kullanmak
$ grep '12.00' /home/david/backup/log.txt
Bu komut basit olarak grep in nasıl kullanılabileceğini gösteriyor.(Metin dosyalarının uzantısının .txt olması gibi bir zorunluluk yok).Yukarıdaki komut içinde 12.00 bulunan tüm satırları listeler.
Örneğin bu komut , 12.00 da yapılmış tüm backupların bulunması için kullanılabilir (Tabii içinde zamanların olduğu log.txt dosyasının olması koşuluyla)
$ grep -v '12.00' /home/david/backup/log.txt
Bu komutla ise içinde 12.00 bulunduran satırlar dışındaki tüm satırları listeler.
$ grep -l 'delay' /code/*.c
Bu komut /code dizininde .c uzantılı dosyalardan içinde "delay" yazısı bulunanların adlarını listeler. Bununla sadece dosya isimleri listelenir(Q:Yani satırlar listelenmez..)
$ grep -w '\<bay' *
$ grep -w 'watch\>' *
Bu iki komut aramayı biraz daha derinleştirir.İlk komur "bay" ile başlayan kelimelerin olduğu satıları , ikinci komut ise "watch" ile biten kelimelerin olduğu satırları arar.
-
Borularla kullanım
$ ls -l | grep rwxrwxrwx
Bildiğiniz gibi "ls -l" komutu dizin içeriğini listeler. "grep rwxrwxrwx" kısmı ise bize yazma,okuma,çalıştırma izinlerinin kullanıcı,grup,diğerleri için verildiği dizinleri listeler. Böylece tüm dizinleri görmektense sadece bu izinlerin olduğu dizinleri görürüz. (Aslında sadece metin araması yapıyoruz. "ls -l" nin çıktısını grep komutuna yönlendirerek süzgeçten geçiriyoruz)
Grep'in çıktısı diğer programlara şöyle yönlendirilir :
$ du | grep 'mp3' | more
Bu komutun ne yaptığını anlamışsınızdır...(Q:Ama ben en aşağıda açıkladım)
$ grep ` ^ #` /home/david/script1 | more
Bu komut /home/david/script1 dosyasından '#' ile başlayan satırları gösterir. '^#' bize , #'in ilgili satırın ilk karakteri olması gerekliliğini anlatır."more" kısmıda , çıktının çok uzun olması durumunda sayfalar halinde gösterilebilmesi içindir.
$ grep -v ` ^ [0-9]` /home/david/backup/log.txt | more
Bu komut , /home/david/backup/log.txt dosyasında ilk karakteri 0-9 arasındaki sayılar olan satırların dışındaki satırları listeler. More yine çıktıyı sayfalara bölmek için kullanılır.
Önemli: şablon ifadelerinin tekli tırnak ile kapatılması (yukarıdaki örneklerde olduğu gibi) ,yorumlayıcının doğru çalışması için önemlidir.
Grep için bazı önemli parametreler
-v
komutun davranışını tersine çevirir. Örneğin , şablona uygun olanları göstermesi gerekirken uymayanları listeler.
-c
Standart raporlamayı (Q:yani satırların hepsini göstermeyi) keser ve sadece şablona uyan satırların sayısını gösterir.
-i
Arama sırasında büyük/küçük harf eşleştirmesi yapmaz
-w
Şablonun başka bir kelime içinde olmayıp , kendi başına bir kelime olup olmadığını denetler. Böylece , "bay" kelimesi için arama yaptığınızda "baywatch" ile ilgili satırlar ekrana gelmez.
-l
Şablona uygun satırların bulunduğu dosya adlarını listeler.
-r
parametreden sonra verilen dizinin ,alt dizininlerinde de verilen şablona uygun arama yapar. (recursive)
Bu belgenin ,grep'e başlamanıza yardım ettiğini umarım. Grep , Linux'a diğer OSler karşısında avantaj kazandıran bir araç. Grep'i diğer araçlarla verimli kullanmak , kullanıcıya Unix'te büyük bir güç verir.
Q:
du komutu ,dosya boyutlarini gosterir
-h (human readable format) parametresi ise boyut bilgilerini daha anlasilir hale getirir(normalde KB cinsinden).Şimdi bir deneme yapalım.
knoppix@ttyp0[knoppix]$ cd //
knoppix@ttyp0[//]$ cd mnt
knoppix@ttyp0[mnt]$ cd hda5
knoppix@ttyp0[hda5]$ ls
1S0z Pr0gz V1dz
1c0nZ RECYCLER WallPap3Rz
1maG3Z Spe3chZ jackass.the.movie.dvdrip.divx-glorious.avi
DocZ System Volume Information mp3
L3ssonZ Th1ngZ
knoppix@ttyp0[hda5]$ du -h | grep 'mp3' | more
41M ./mp3/01-DANCE AROUND The WORLD/Disc One
44M ./mp3/01-DANCE AROUND The WORLD/Disc Two
84M ./mp3/01-DANCE AROUND The WORLD
68M ./mp3/02-TECHNO MILLENNIUM/Disc One
69M ./mp3/02-TECHNO MILLENNIUM/Disc Two
137M ./mp3/02-TECHNO MILLENNIUM
69M ./mp3/03-CLUB IBIZA/Disc One
70M ./mp3/03-CLUB IBIZA/Disc Two
138M ./mp3/03-CLUB IBIZA
65M ./mp3/04-TRANCE NON-STOP
64M ./mp3/05-MINISTRY ANNUAL 2000/Disc One
65M ./mp3/05-MINISTRY ANNUAL 2000/Disc Two
129M ./mp3/05-MINISTRY ANNUAL 2000
68M ./mp3/06-Paul Oakenfold - Travelling/Disc One
68M ./mp3/06-Paul Oakenfold - Travelling/Disc Two
136M ./mp3/06-Paul Oakenfold - Travelling
57M ./mp3/Depeche_Mode_all/DM 81 Speak And Spell
38M ./mp3/Depeche_Mode_all/DM 82 A Broken Frame
46M ./mp3/Depeche_Mode_all/DM 83 Construction Time Again
48M ./mp3/Depeche_Mode_all/DM 84 Some Great Reward
51M ./mp3/Depeche_Mode_all/DM 86 Black Celebration
58M ./mp3/Depeche_Mode_all/DM 87 Music For The Masses
39M ./mp3/Depeche_Mode_all/DM 89 (Live) 101/Disc A
50M ./mp3/Depeche_Mode_all/DM 89 (Live) 101/Disk B
88M ./mp3/Depeche_Mode_all/DM 89 (Live) 101
44M ./mp3/Depeche_Mode_all/DM 91 Violator
44M ./mp3/Depeche_Mode_all/DM 93 Songs Of Faith And Devotion
54M ./mp3/Depeche_Mode_all/DM 97 ULTRA
43M ./mp3/Depeche_Mode_all/DM 98 The Singles 85-98/CD1
47M ./mp3/Depeche_Mode_all/DM 98 The Singles 85-98/CD2
89M ./mp3/Depeche_Mode_all/DM 98 The Singles 85-98
1.5M ./mp3/Depeche_Mode_all/IMAGES
23M ./mp3/Depeche_Mode_all/MLG 89 Counterfeit e.p
636M ./mp3/Depeche_Mode_all
584M ./mp3/Dj. Alex Techno Part 1 - Mp3
73M ./mp3/DJ_TOP_40_(CD1)
73M ./mp3/DJ_TOP_40_(CD2)
53M ./mp3/EARTH WIND&FIRE.THE_PROMISE
63M ./mp3/FUTURE_TRANCE_(CD1)
65M ./mp3/FUTURE_TRANCE_(CD2)
635M ./mp3/Karisik_Pop
823M ./mp3/mixed
78M ./mp3/soul_saucee
3.7G ./mp3
knoppix@ttyp0[hda5]$
Görüldüğü gibi du komutunun çıktılarından grep yardımıyla "mp3" olanlılarını ayırdık.Gerçekten kullanışlı.
Not alıntıdır.
Yararlı ve güzel bir mesaj olduğunu düşünüyorum. İnşallah tüm kardeşlerimizin işine yarar.
Saygılarımla..
Kaynak : http://www.hostingsiteniz.com/grep-k...imi-t24.0.html
Kaynak : http://www.hostingsiteniz.com/awk-ko...imi-t25.0.html
Kaynak : http://www.hostingsiteniz.com/sed-ko...imi-t23.0.html