Regular Expressions Version 0.1



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

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

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

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

C Konsol Giriş Çıkış Fonksiyonları

Komut Penceresi ile Çalışmaya Başlamak

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

Internet Programming II

Parsing Dostu: AWK! Özkan KIRIK. ozkan ~ enderunix.org

Linux'ta Kabuk ve Kabuk Programlama

Burada a değişkeninin türü integer olarak verildi. Peki biz bu ifadeyi tırnak içerisinde yazarsak ne olur?

A. Murat Eren AWK Programlama Dili

C Programlama Dilininin Basit Yapıları

Hafta 12 Karakter Tutan Diziler

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

man komut man ls (ls komutu hakkında bilgi verir.) man pwd (pwd komutu hakkında bilgi verir.)

Dr. Fatih AY Tel: fatihay@fatihay.net

Kabuk Programlama (Bash)

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

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Internet Programming II

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

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

KABUK PROGRAMLAMA (shell programming- scripting)

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

Veritabanı. SQL (Structured Query Language)

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

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

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

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

LABORATUVAR ÇALIŞMASI 1 - Python a Giriş

SEÇİM İŞLEMLERİ. Yüzde Hesaplamaları HÜCRE KOPYALAMA & TAŞIMA FORMÜL GİRİŞİ FORMULLER 3) DÖRT İŞLEM. a) Bugün: b) Şimdi: c) Topla: d) Çarpım:

Autofs. Hüseyin Kaya

Python Programlama Dili

Print Komutu ile Değişkenleri Yazdırmak

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

Excel Nedir? Microsoft Excell. Excel de Çalışma sayfası-tablo

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

Veri Tabanı Tasarım ve Yönetimi

Web Tasarımının Temelleri

$ echo $PATH /sbin:/bin:/usr/sbin:/usr/bin:/usr/x11r6/bin: /usr/local/sbin:/usr/local/bin:/usr/games:.

TEMEL STRING İŞLEMLERİ

FORMÜLLER VE FONKSİYONLAR

PHP, nesne-yönelimli (object-oriented) bir dil olduğu için, nesne oluşturma imkânına ve bunların kullanılmasını sağlayan metodlara da sahiptir.

NESNEYE YÖNELİK PROGRAMLAMA

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

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

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

3. BELGE DENETİMİ. Bu bölümde belge denetimi için gerekli olan yazım, dil bilgisi ve dil ayarlarını öğreneceğiz.

Bilgisayar Programlama MATLAB

Matlab da Dizi ve Matrisler. Mustafa Coşar

Internet Programming II

BİLGİSAYAR PROGRAMLAMA DERSİ

ÜNİTE 9 ÜNİTE 9 MICROSOFT EXCEL - II TEMEL BİLGİ TEKNOLOJİLERİ İÇİNDEKİLER HEDEFLER

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

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

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

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

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

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Word Otomatik Düzelt

Eln 1002 Bilgisayar Programlama II

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

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

ALFASAYISAL BİLGİLER KARAKTER DİZİLERİ (STRING)

İŞLETMELERDE BECERİ EĞİTİMİ DERSİ MİCROSOFT WORD 2007 ÇALIŞMALARI

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

Özyineleme (Recursion)

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

Temel Linux Komutları

Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos

PROGRAMLAMAYA GİRİŞ DERS 2

Bigisayar Programlama

BİL435 LATEX ile Doküman Hazırlama

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,

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

Genel Programlama II

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

Dolgu Rengi: Seçili hücre veya hücrelerin arka planını renklendirir.

İnternet Programcılığı Dersi 2.Dönem Ders Notu

qmail ile üniversite mail sistemi yönetimi Devrim Sipahi Dokuz Eylül Üniversitesi

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

Genel Programlama II

Ödevler: Linux ve Uygulamalar Ertesi günün sabahına hazırlanması beklenen akşamlık ödevler

MİCROSOFT OFFİCE EXCEL SORULARI

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

String Sınıfını Yönetmek

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

Göstericiler (Pointers)

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

ideal Sistem Tester Kullanım Klavuzu

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

FORMÜL ADI (FONKSİYON) FORMÜLÜN YAZILIŞI YAPTIĞI İŞLEMİN AÇIKLAMASI

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

Scream! e gelen veri akışlarından bazılarını diğer bir kurum yada bilgisayarla paylaşmak için kullanılabilir.

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

Transkript:

Regular Expressions Version 0.1 Hüseyin Kaya hkaya@be.itu.edu.tr 2001 Özet Bu belge Linux and Unix Shell Programming adlı kitaptan faydalalınarak yazılmıştır. Kitabın yazarı David Tansley. İngilizce bilenler veya tercüme okumak istemeyenler kitabın aslını okusunlar. 1

Bölüm 1 Regular Expressions Örnekler 1.1 Giriş Bu bölümde özel anlamı olan bazı karakterleri tanıtmaya çalışalaım. * Bütün karakterler anlamına gelir. ˆ Satır başı anlamına gelir. Bazı durumlarda birşeyin tersi anlamında da kullanılır. $ Satır sonu anlamında kullanılır.. Tek karaktere karşılık gelir. [ ] Karakter olasılıklarını karşılar. Mesela [0-9] herhangi bir rakamı ifade eder. \ Özel karakterleri özel anlamlarından kaçırmak için kullanılır. ifade \{n\} ifade nin n kere tekrarını gösterir. Mesela X \{2\} XX e karşılık gelir. Bulunduğunuz yerdeki dizinleri bulmak için: $ ls -al grep d... Büyük harfle başlayan bütün dosyaları görmek için $ ls grep ^[A-Z] Bir dosyanın içinde a harfinin en az 3 kere yanyana kullanıldığı satırları görmek için: $ grep a\{3,\} dosya Ana dizindeki bütün mp3 dosyalarını bulmak için: 2

$ find / -iname *.mp3 Bir dosyanın içindeki boş satırları satır numaraları ile birlikte görüntülemek için: $ grep -n ^$ dosya 1.2 awk awk belli formatlardaki metin dosyaları ile oynamanızı sağlayan, değişiklikler yapabilen kendi çapında bir dildir. Bütün komutlarını buraya aktarmak mümkün olmadığı için bazı temel özellikleri ile yetineceğiz. İyi bir kabuk programcısı awk dilini çok iyi bilmelidir. awk ı çalıştırmanın birçok yolu var. Bunlardan en temel olanı ve burada en sık kullanacağımız şekli $ awk [-F ayrac] komutlar dosya(lar) awk ayraç olarak hiçbirşey tanımlanmazsa boşluk karakterinin kullanacaktır. /etc/passwd gib dosyalarla uğraşıyorsanız : ayracını kullanmanız gerekecektir. Diğer bir yöntem ise awk komutlarını ayrı bir dosyaya yazdırmak ve hepsinin birden çalıştırmaktır. $ awk -f awk_dosyasi dosya(lar) awk nasıl çalışır? Awk dosyayı belirtilen ayraca uygun olarak okur. Ayraç olarak boşluk karakterini düşünelim. awk ilk karşılaştığı elemenı ilk sütun elemanı olarak düşünecektir. Ayracı atladıktan sonra karşılaştığı elemanı ikinci sütün elemanı olarak atayacaktır. Bu şekilde satır sonuna kadar ilerler. Bu şekilde işlediği her satırı bir kayıt gibi düşünecektir. awk betiklerinin sonuçlarını kaydetmek için iki yol vardır. Birincisi > yönlendirmesi ile yapılır. Bu yöntem en sık kullanılan yöntemdir. Yönlendirdiğiniz dosya eğer yoksa oluşturulur, varsa üstüne yazılır. Bu yüzden dikkatli olmanızda yarar var. Ayrıca yazdığınız betiğin istediğiniz sonuçları verip vermediğini hemen kontrol edemezsiniz. İkinci yol ise tee komutunu kullanmak. Bu buyruk ilk önce sonuçları gösterir ardından dosyaya kaydeder. Örnekler Bir dosyanın bütün içeriğini göstermek için: $ awk {print $0} dosya Bir dosyanın ilk ve dördüncü sütunlarını görüntülemek için: 3

Örnekler $ awk {print $1,$4} dosya Çıktının üst tarafına sütun elemanlarını beilrlemek için bazı şeyler yazabilirsiniz $ awk BEGIN {print "isim soyisim\n --------------"} {print $1"\t"$4} dosya Metim işlemlerinin en alt kısmına birşeyler eklemek için END komutunu kullanabilirsiniz. awk BEGIN {print "isim soyisim\n ----------------"} {print $1"\t"$2} END {print "Listenin Sonu"} dosya Dikkat etmeniz gereken nokta şu; END komutunu bütün metin işlem komutları bittikten sonra koymak. En son yapılacak işlem END işlemidir. Özel Karakterler: ˆ$. [] () * +? karakterleridir. Bunlardan + ve? işaretleri sed ve grep tarafından özel olarak algılanmazlar ama awk tarafından özel karakterler olarak nitelendirilir. + Bir veya daha fazla karakter anlamında gelir. [a-z]+ bütün küçük karakterli kelimeler anlamına gelir. awk ın karşılaştırma operatörlerinden bahsedelim. < Küçüktür <= Küçük veya eşit == Eşittir!= Eşit değildir >= Büyük veya eşittir Karşılaştırma ( Regular Expressions ile)! Karşılaştırmamak ( Regular Expressions ile) Eğer bir satırın içinde belirli bir kelimeyi arıyorsanız $ awk $0 ~/kelime/ dosya kalıbını kullanabilirsiniz. Veya tersini de yapabilirsiniz. $ awk $0!~/kelime/ dosya Kelime ararken büyük küçük harf ayırımını gözardı etmemek için $ awk /[hh]üseyin/ dosya kalıbını kullanabilirsiniz. 4

awk ın kendine has bazı değişkenlerine şimdi değinelim. ARGV ARGV ENVIRON FILENAME FNR FS NF NR OFS ORS Komut satırından girilen argüman sayısı Argümanlar dizisi Çevre değişkenlerinin tutulduğu dizi Awk ın üzerinde çalıştığı dosyanın ismi Dosya içindeki kayıt sayısı Ayracı belirleyen komut Her kayıttaki alan(sütun) sayısı O ana kadar okunan kayıt sayısı Sonuç dosyasının ayracı Sonuç dosyasının kayıtlar arası ayracı Bu değişkenler çok çeşitli sonuç dosyalarının oluşturulabilmesini sağlar. $ awk {print NF,NR,$0}END {print FILENAME} dosya NF değişkeninin sık kullanıldığı yerlerden birisi bulunulan dizinin yalın ismini elde etmektir. $ pwd /usr/local/smms $ echo $PWD awk -F/ {print $NF} smms = += *= /= %= ˆ= Atama operatörleri? Conditional expression operator &&! VEYA, VE ve DEGIL operatörleri! Karşılaştırma operatörleri < <= > >= ==! = İlişkisel operatörler + - * / % ˆ Aritmetik operatörler ++ - - Ön ve kuyruk ekleri awk da sütun değişkenlerine isimler atanabilir. Mesela elimizde şöyle bir dosya olsun; Hüseyin Kaya 0216 3448740 Ümraniye _Istanbul Andre Kolya 0212 3330333 Beykoz _Istanbul Nihal Çim 0312 4440444 Aydınlık Ankara Ali Veli 0216 2156325 Beşiktaş _Istanbul Bu dosyayı awk a okuturken ilk sütun değişkeninde isim, dördüncü sütuna da telefon değişkenini atayalım. $ awk {isim=$1;telefon=$4; if(isim ~/Hüseyin/)print isim Hüseyin telefonu : 3448740 " telefonu : "telefon} kayit 5

Bulunduğunuz yerdeki dosyaların toplam boyutunu awk sayesinde hesaplayabilirsiniz. $ ls -al awk /^[^d]/ {print $9"\t"$5} {top+=$5} END {print "toplam KB= "top} awk ın bazı karakter (string) fonksiyonlarından bahsedelim. gsub(r,s) gsub(r,s,t) index(s,t) length(s) match(s,r) $0 içindeki r leri s ile değiştirir $t içindeki r leri s ile değiştirir t nin s in içindeki ilk pozisyonu s nin uzunluğu r yi s nin içinde arar gsub için bir örnek yapalım. $ awk gsub(/andre/,"mahmut") {print $0} kayit Yeni kelimenin tırnaklar içinde yazılmasına dikkat edin. Eğer karakter yerine rakam yazsaydınız tırnaklara gerek olmayacaktı. Kabukda kullanılan değişkenleri awk a aktarmak için borulama kullanılabilir. $ STR="dosya.txt" $ echo $STR awk {print substr($str,1,5)} dosya Özel kelime karakterlerini aşağıdaki tabloda görebiliriz. Bir örnek yapalım \b Geri sil \n Yeni satır \r Enter \t Tab \ddd Karakterin octal değeri $ awk BEGIN {print "\n\andre\t\kolya\n\andre\t\104\141\171"} Andre Kolya Andre Kolya 6