Yrd. Doç. Dr. A. Burak İNNER

Benzer belgeler
Regular Expressions ve grep, awk, sed ile Kullanımı

Regular Expressions Version 0.1

Yrd. Doç. Dr. A. Burak İNNER

Veritabanı Tasarımı. Düzenli İfadeler

Yrd. Doç. Dr. A. Burak İNNER

Düzenli İfadeler & Kullanım Alanları

Düzenli İfadeler & Kullanım Alanları

Chomsky Hiyerarşisi. Düzenli Diller ve Đfadeler 03/09/2014. Doç.Dr.Banu Diri

Yrd. Doç. Dr. A. Burak İNNER

$ rm dosya1 dosya2 dosya3 dosya4 dosya5 dosya6 dosya7 dosya8

Yrd. Doç. Dr. A. Burak İNNER

Komut Penceresi ile Çalışmaya Başlamak

Adım Adım SPSS. 1- Data Girişi ve Düzenlemesi 2- Hızlı Menü. Y. Doç. Dr. İbrahim Turan Nisan 2011

Karakter Değişkenlere İlişkin Komutlar

Yrd. Doç. Dr. A. Burak İNNER

SAB 103 TEMEL BİLGİSAYAR KULLANIMI

Aşağıda listelenen temel linux komutları bilgisayarınızın komut satırında çalıtırılacaktır.

.docx veya.doc (2007 ve üzeri sürümlerde.docx iken sürümlerinde.doc tur.) 1.Belge Başlığı

TEMEL BİLGİSAYAR. Ders Notları. Yrd. Doç. Dr. Seyit Okan KARA

Lıke Joker Karakterler, Is [not] Null, Order By, Group By, As

BİLGİ İŞLEM DERS 3. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

PASCAL PROGRAMLAMA DİLİ YAPISI

C Konsol Giriş Çıkış Fonksiyonları

Komutlar (Devam) ls -a > deneme (ls -a komutunun çıktısı deneme isimli. ls -a >> deneme (ls -a komutunun çıktısı deneme

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

Excel Formuller ve Kullanımı

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR PROGRAMLAMA DERSİ

IN ve NOT IN Tablodaki alan içeriklerine ulaşmak için IN deyimi kullanılır.

1. MİCROSOFT EXCEL 2010 A GİRİŞ

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

KELİME İŞLEMCİ MİCROSOFT OFFİCE WORD KULLANIMI

ALGORİTMA VE PROGRAMLAMA II

BİLGİSAYAR UYGULAMALARI Şırnak Üniversitesi Mühendislik Fakültesi Güz Dönemi Arş.Gör. Eren DEMİR ve Arş.Gör. Veysel KIŞ (

Veritabanı Tasarımı. SQL Deyimi Anatomisi

Aşağıdaki programı inceleyip ekrana ne yazacağını söyleyebilir misiniz?

EĞİTİM-ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ 6. SINIF 2. DÖNEM 2. SINAV ÇALIŞMA NOTLARI

Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Linux'ta Kabuk ve Kabuk Programlama

Yrd. Doç. Dr. A. Burak İNNER

Oracle Database 11g: Introduction to SQL

Linux altında komut satırında...

Flash ile Etkileşimli Öğretim Materyali Hazırlama Semineri

KELİME İŞLEMCİ MİCROSOFT OFFİCE WORD KULLANIMI

Veritabanı. SQL (Structured Query Language)

BİL 810 İnşaat Mühendisliğinde Bilgisayar Uygulamaları

EXCEL de her bir çalışma alanı bir sayfa olarak adlandırılırken, birden fazla sayfa ise kitap olarak adlandırılır.

Internet Programming II

KLAVYEDE TUŞLAR İMLEÇ NEDİR?

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

2. HTML Temel Etiketleri

MS WORD 5. BÖLÜM. Şekil Sayfa Düzeni Sekmesi. Şekil Temalar Grubu

Veri Tabanı Hafta Dersi

Ġşlem tablosu kavramını tanımlamak ve işlem tablolarının işlevlerini öğrenmek. Ġşlem tablolarının temel kavramlarını tanımlamak.

Excel de Düşeyara Vlookup) Fonksiyonunun Kullanımı

ÖNDER BİLGİSAYAR KURSU. Microsoft Office Kursu Eğitim İçeriği

Yrd. Doç. Dr. A. Burak İNNER

A. Murat Eren AWK Programlama Dili

Hafta 12 Karakter Tutan Diziler

12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )

ÜNİTE 3 Veri Girişi, Temel Hesaplamalar ve Formüller

ELEKTRONİK TABLOLAMA Aritmetiksel işlemler ve mantısal karşılaştırmaların yapıldığı programlar elektronik tablolama programlarıdır.

pfrintf fonksiyonu: Çıkışın formatlı olması ve bunun bir dosyaya yazdırılması durumlarında kullanılır. fprintf fonksiyonunun genel yazım biçimi,

FORMÜLLER VE FONKSİYONLAR

PROGRAMLAMA TEMELLER. C Program Yap s

NAVİGASYON KULLANIM KILAVUZU.

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir?

Burada dikkat edilmesi gereken nokta, bilinmeyen veya değişkeninizi yazarken diğer bilinmeyenler ile arasına boşluk koymanız gerektiğidir.

3. Aşağıdakilerden hangisi B5 hücresinin değerini getirir (Kopyalar)? a-) =B5 b-) B5 c-) =B(5) d-) =5B

Laboratuvar 2 Tek Kayıt Fonksiyonları

Bash ile Programlama. Cem Ahmet Mercan. Ulusal Yüksek Başarımlı Hesaplama Merkezi (UHeM) 13 Temmuz 2017

Veri Tabanı Tasarım ve Yönetimi

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

TEMEL BİLGİSAYAR. Ders Notları. Yard. Doç. Dr. Seyit Okan KARA

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Bağlantılar dışarıdan alınan verilerin (bu farklı Excel dosyası da olabilir) özelliklerini düzenlemek ve verilerin son halini almak için kullanılır.

Resim 1. Access açılış sayfası. Resim 2. Access veri tabanı düzenleme sayfası

TEMEL BİLGİ TEKNOLOJİLERİ WORD DE METİNLERLE ÇALIŞMAK VE KLAVYEDEKİ TUŞLAR

a. Giriş sekmesi: 1. Paragraf bölümünde Madde İşaretleri veya Numaralandırma seçeneklerinden istediğinize tıklayın.

Internet Programming II

Bilgisayar. Bilgisayarın Özellikleri. Giriş İşleme Çıkış. Bilgisayar Nedir? Bilgisayarın Çalışma Prensibi

Yrd. Doç. Dr. Caner ÖZCAN

ÖĞRENME FAALİYETİ 1 ÖĞRENME FAALİYETİ 1

Merkezi İşlem. Birimi

LABORATUVAR ÇALIŞMASI 1 - Python a Giriş

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

ZTerminal KULLANMA KILAVUZU. yazılımı. USB Terminal

CHAPTER 3. ZAMANLANMIŞ GÖREVLER (Automated Tasks)

Yrd. Doç. Dr. A. Burak İNNER

Bilgisayar Programlama MATLAB

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Bu Hafta Öğreneceklerimiz

Ekle Menüsü İşlevleri ÜNİTE 10. Bu üniteyi çalıştıktan sonra; Ekle Menüsü Tablolar Resimler ve Çizimler Bağlantılar Metin ve Simgeler Media Flash

IV. Ünite A. BAŞLANGIÇ B. TEMEL İŞLEMLER C. FORMÜLLER VE FONKSİYONLAR D. BİÇİMLEME E. İLERİ ÖZELLİKLER ELEKTRONİK TABLOLAMA

MATLAB/Değişkene Değer Atamak

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.

MODÜL BİLGİ SAYFASI KODU :

MICROSOFT OFFİCE WORD PROGRAMI DOSYA İŞLEMLERİ

Transkript:

Yrd. Doç. Dr. A. Burak İNNER Kocaeli Üniversitesi Bilgisayar Mühendisliği Yapay Zeka ve Benzetim Sistemleri Ar-Ge Lab. http://yapbenzet.kocaeli.edu.tr

Basit metin işlemleri (tek dizeler üzerinde arama yapma gibi) nasıl yapılacağını bir önceki dökümanda incelemiştik Örneğin ; Dizenin sadece satır başında olduğu durumu arama İstenilen bir modelin aranması örneğin telefon numarası,e posta Bu düzenli ifadelerin REGEX rolüdür.

Dosya adlarını içeren desenleri joker karakterler ve diğer açılımlarla kullanmayı öğrendik ancak bu gelişmeler dosya adlarıyla sınırlıydı. Düzenli ifadeler çeşitli linux araçları tarafından kullanılmak üzere metin desenleri oluşturmak için çok güçlü bir araçtır. (özellikle metin içinde arama yapmak için ) Düzenli ifadeler benzer teknikler kullanır ancak genel metin kalıpları için kullanılır. Komut dosyası dillerinde ve araçlarda perl ve python kullanılır. Bunu kullanan ana araçlardan biri grep dir.('grep' de 're' düzenli ifadeler anlamına gelir)

Bir çok özel durumlar ve formlar vardır Bazı özel araçları kullanıyor,fakat kurallarda ufak değişiklikler vardır. Bazı araçların bash de kullanılanın daha zengin seti vardır (perl gibi) Bu doküman sadece konuyu tanıtmayı hedeflenemektedir, REGEX ile ilgili çok sayıda kaynak vardır.

$ grep [seçenek] <string/pattern> <dosya(lar)> Dosya kümesindeki dize veya deseni arar. seçenek tam hali açıklama -i --ignore-case Durumu göz ardı et -v --invert-match Eşleşmeyen satırları göster -c --count Sadece eşleşenlerin sayısını yazdır -l --files-with-matches Sadece dosya adlarını yazdır -L --files-without-match -n --line-number Satır numaralarını ekle -h --no-filename Dosya adını ekleme

Literal karakterler, arama modelinde kendilerini temsil eden karakterlerdir. $ grep hata *.log hata daki harflerin tümü,tam metin karakterleridir. Meta karakterler,özel anlamları olan karakterlerdir. ^ $. [ ] { } -? * + ( ) \ Diğer tüm karakterler literal karakterlerdir.

Normalde kabuk kurallarına göre genişlemeyi önlemek için meta karakterli herhangi bir ifadeyi bir telifin içine koymamız önerilir. Meta karakterler kaçındıklarında,yani eğik çizgiyle başlayarak,harfler olarak ele alınabilirler. Örneğin; \^ \{ \$ \\ Geri eğik çizgi bazı hazır bilgi karakterlerini bir meta karakter haline dönüştürebilir. Örneğin ; \d \w Düzenli ifadeler,literal ve meta karakterlerin bir karışımından oluşturulan metin desenleridir.

POSIX, iki tür düzenli ifadeyi tanımlar Temel Düzenli İfadeler(Basic Regular Expressions (BRE)) Genişletilmiş Düzenli İfadeler(Extended Regular Expressions (ERE)) Temel düzenli ifadeler(bre) aşağıdaki meta karakterleri kullanır,diğer tüm karakterlerde harf olarak kabul edilir:. ^ $ [ ] * Genişletilmiş düzenli ifadeler(ere) temel kümeye ek olarak aşağıdaki setin kullanılmasını sağlar: ( ) { }? + Ters eğik çizgi bu meta karakterleri (ERE) ve (BRE) de tersine çevirir. grep aracı BRE yi kullanır. ERE ye erişmek için, egrep ya da grep E kullanılır.

TEMEL DÜZENLİ İFADELER (Basic Regular Expressions (BRE))

. (nokta) tek bir karakteri temsil eden bir meta karakterdir.(null karakteri içermez.) Örneğin, $ grep.zip file.log Bu örnek herhangi bir karakterle başlayan ve ardından zip kelimesini içeren 4 harfli bir metin desenini arar. Sonuçlar : gzip, bzip, gnubzip, rezipped zip olmaz.

Dizenin başında bulunan (^),dizenin satır başında olması gerektiği anlamına gelir. Dizenin sonunda bulunan ($),dizenin satırın sonunda olması gerektiği anlamına gelir. örnek: $ grep ^zip file.txt zip ile başlayan herhangi bir satırla sonuçlanır. $ grep zip$ file.txt zip ile biten herhangi bir satırla sonuçlanır. $ grep ^zip$ file.txt sadece zip içeren bir satırla sonuçlanır. $ grep ^$ file.txt boş satırla sonuçlanır.

Köşeli parantezler arasında listelenen herhangi bir karakter dizisi için köşeli parantez kullanımı; $ grep [bg]zip dict.txt Sonuçlar: bzip, gzip, aabzip Parantez içindeki herhangi bir karakter haricinde literal olarak kabul edilecektir. (^) Eğer başlangıçta gelirse (olumsuzlama olarak kabul edilecektir) (-) Eğer ortada gelirse (aralık olarak kabul edilecek) Olumsuzlama, haricinde herhangi bir karakterle zip öneri kelimeleri yakalar. $ grep [^bg]zip dict.txt b veya g veya Null karakteri haricinde herhangi bir karakterle zip öneri kelimeleri yakalar. Aralıklar $ grep [a-z]2 dict.txt Herhangi bir küçük harfle başlayan ve ardından 2 gelen kelimeler. $ grep [a-fa-f]4 dict.txt

Kısayol karakteri Açıklama \w [a-za-z0-9_] için standartlar (kelime karakteri) \s Boşluk karakteri,sekmeler veya satır sonları için \t Sekmeler için(ascii 0x09) \r Başa dönüş desteği (ASCII 0x0D) \n Satır besleme (0x0A) \xnn ASCII = nn (\xa9 == @) karakterleri temsil eder

Aşağıdaki karakter sınıfları kullanılabilir; Sınıf [[:alnum:]] [[:word:]] [[:alpha:]] Açıklama Alfanümerik [a-za-z0-9] Alnum ile altçizgi (\ w) ek olarak aynı [a-za-z0-9_] Sadece harfler [a-za-z] [[:digit:]] Sadece rakamlar [0-9] [[:blank:]] [[:lower:]] [[:upper:]] [[:space:]] [[:xdigit:]] Boşluk veya Tab (\s) Yalnızca küçük harfler [a-z] Yalnızca büyük harfler [A-Z] space Hex digit [a-fa-f0-9]

GENİŞLETİLMİŞ DÜZENLİ İFADELER (Extended Regular Expressions (ERE))

$ grep -E AAA BBB file.txt Bu AAA veya BBB içeren herhangi bir satırla eşleşir. () değişimi kullanarak normal ifadenin geri kalanından ayırırız. $ grep E ^(AAA BBB CCC) file.txt AAA veya BBB veya CCC ile başlayan herhangi bir satıra uygundur.

? karakteri, önceki elemanın isteğe bağlı (sıfır veya bir kez) olduğunu ifade etmek için kullanılır. * karakteri (sıfır veya daha fazla kez) kullanılır + karakteri (bir veya daha fazla kez) kullanılır Örneğin, Herhangi bir satırı bir telefon numarasıyla başlayarak arıyoruz bu formatta olabilir (nnn) nnn nnnn veya nnn nnn-nnnn $ grep E ^\(?[0-9][0-9][0-9]\)? [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9] file.txt örnek, Hangi satırın uygun bir ifade olduğunu kabul etmek,büyük harfle başlamak,ardından herhangi bir karakter veya boşluk bırakmak veya bir periyotla bitmek istemek; $ grep E ^[[:upper:]][[:upper:][:lower:] ]*\.$ file.txt

{} belirli bir öğeye belirli sayıda eşleştirmek için kullanılabilir. Eşleşen Sayısı {n} {n,m} {n,} {,m} Açıklama n defa n to m defa (dahil) n veya daha fazla kez m veya daha az kez Örnek : Telefon numarası örneği: $ egrep \(?[:digit:]{3}\)?[:digit:]{3}-[:digit:]{4} file.txt

Örnekler: $ egrep -i Continued\.* file.txt $ grep [0-9a-fxA-FX]abc file.txt $ egrep fish\ chips\ pies file.txt $ egrep -i \(cream\ fish\ birthday\ \) cakes $ grep [Jj]oe [Bb]loggs file.txt $ grep -E colou?r file.txt file.txt Hatırlatma: Örnek ekran görüntüsü bir sonraki sayfada.

Diğer komutların bir çoğu da düzenli ifadelerle çalışır, Dosyaları bulmak için find ve locate komutları kullanılır. vi editorü less komutu düzenli ifadeleri kullanarak metin araması yapabilir. Düzenli ifadeleri yoğun şekilde kullanan araçlar. sed awk

sed ve awk

sed akış editörünü simgeliyor. sed bir program,komut dosyası veya komut satırından metin dosyalarını değiştirmek için kullanılır. sed düzenli ifadeleri kapsamlı biçimde kullanan çok ünlü programlardan biridir. sed zengin bir programdır ve bir çok seçeneğe sahiptir. Metin dosyalarının içeriğini değiştirmek için kullanılır

Tüm sed komutları, sed e aşağıdaki biçimde iletilen bir komut dizesi haline getirilir. $ sed command string Sed in üzerinde çalıştığı giriş dosyası Giriş yönlendirmesi $ sed command string < input-file Pipes $ cat input-file sed command string Çıktı bir dosya da istersek stdout a gider dosyayı yeniden yönlendirmemiz gerekir. $ sed command string < input-file > output-file

Metin yerine koymak, sed in en populer komutlarından biridir. Belirli bir metin düzeninin tüm tekrarlarını arar(regex kullanarak) ve farklı dizge ile değiştirir. Örnek: $ sed s/day/night/ <old >new Sed i çalıştır Yer değiştirme komutu Aranacak model Çıktı dosyası Girdi dosyası Yerine koyulacak

Sed eğik çizgi,arama deseni ve değiştirme deseni arasındaki ayırıcı(sınırlayıcı) olarak kullanılır. Arama deseninde veya değiştirme deseninde bir eğik çizgi kullanmamız gerekiyorsa onu terk etmeliyiz(ters eğik çizgi ile başlayınız) $ sed s/yes\/no/true\/false/ < old-file > new-file Başka bir seçenek,başka bir karakteri ayırıcı olarak kullanmaktır. $ sed s:yes/no:true/false: < old-file > new-file $ sed s yes/no true/false < old-file > new-file

sed dosya satır satırına göre çalışır Bu yüzden bu komut $ sed s/day/night/ <old-file >new-file Her satırdaki arama deseninin (day) bir oluşumunu,değiştirme desenine (night) Arama kalıbı aynı satırın içinde birden çok kez mevcutsa,yalnızca ilk ortaya çıkma yerini alacaktır. Bunun önlemek için genel bayrağı kullanın $ sed s/day/night/g <old-file >new-file

Bir dizgenin tümüne bakmak istediğimizi ve parantez içine koymak istediğimizi varsayalım.bu komutu kullanırdık. $ sed s/abc/(abc)/g <old-file >new-file

Aramıza bir desen kullanmak istersek,meta karakterini & ile eşleşen dizgeyi göstermekiçin kullanabiliriz. $ sed s/gr[ae]y/(&)/g <old-file >new-file $ sed -r s/[0-9]+/(&)/g <old-file >new-file Başka bir örnek dosyadaki herhangi bir sayıyı tekrarlamak istiyoruz. $ sed -r s/[0-9]+/& &/g <old-file > new-file Not, son örnekler genişletilmiş REGEX i desteklemek için -r kullanmaktadır.

Awk, tablolanmış verileri içeren dosyaları (satır ve sütunlar) işlemek için mükemmel bir araçtır Awk ayrıca güçlü dizge işleme işlevlerine sahiptir,bu nedenle belirli dizeleri arayıp çıktıyı değiştirebilir. Awk de çok ilişkisel dizeler için destek vermektedir. Awk nın "gawk adlı bir sürümü vardır. awk ismi mucitlerinin isimlerinden gelmektedir.

AWK girdi dosyasını satır satır okur Her satırda bazı desene dayalı test gerçekleştirir. Test başarılı olursa bir işlem gerçekleştirir Bir awk ifadesi şöyle görünecek: pattern { action } Bazı temel desen, No Pattern: Her satırda eylem gerçekleştirir. BEGIN: Dosya başlangıcı ise eylemi yapın END: Dosya sonu ise eylemi gerçekleştirin Örnek : BEGIN { print şimdi dosyayı başlatacağız" } { print } END { print Dosya bitti" }

BEGIN { print "File\tOwner"} { print $9, "\t", $3} END { print " - DONE -" } Bu aşağıdakileri yapacaktır, Girdi dosyasının ilk satırı okunduğunda komut dosyaları TAB ile ayrıştırılmış File ve Owner dizelerini çıktılar. Giriş dosyasından okunan her satır için birinci satırda dahil olmak üzere 9. sütundaki ve 3. sütunun verdiği satırlar bir TAB ile ayrışmış olarak yazılır. Girdi dosyası tamamen okunduktan sonra komut dosyaları - DONE yazdırılır. Şimdi bu awk deyimlerini şu çıktıya uygularsak : $ ls -l Tam dosyalar için dosya adlarının ve sahiplerinin adlarının bir listesini yapmalıdır.

AWK çok güçlü bir sözdizimi Bir bash komut dosyası içinde yazılabilir Değişken tanımlayabilir, matematiksel işlemleri gerçekleştirilebilir Ayrıca REGEX için güçlü bir destek Denediğim bazı örnekler:

Ahmed ElArabawy, Linux for Embedded Systems for Arabs

Dersin Sonu Kocaeli Üniversitesi Bilgisayar Mühendisliği Yapay Zeka ve Benzetim Sistemleri Ar-Ge Lab. http://yapbenzet.kocaeli.edu.tr/