Necati DEMİR (necati.demir@students.comu.edu.tr)
Naciye UZUN (naciye.uzun@students.comu.edu.tr)
version 0.1, Çanakkale 29/05/2003
Lütfen, bu belgede gördüğünüz hataları,
eksikleri ve belge ile ilgili eleştirileri -belgenin daha kaliteli bir hale
gelebilmesi için- bize bildiriniz.
Bizi bu çalışmaya teşvik ettiği için
A. Murat EREN hocamıza teşekkür ederiz.
Bu belgenin son halini http://docs.comu.edu.tr/homemade/regex/regex.html adresinden temin edebilirsiniz
1. Regex Nedir?
2. Regex hangi dillerde kullanılır?
3. Avantajları
4. Regex'in Temelleri
4.1. Satır Başları ve Satır Sonları
4.2. Bir Kaç Karakterin Herhangi Biri İle
Uyuşması
4.3. Herhangi Bir Karakter Dışındakileri Aramak
4.4. Herhangi Bir Karakter İle Uyuşum-Nokta
4.5. Bir Kaç İfadenin Herhangi Biri İle Uyuşum
4.6. Kelimeyi Sınırlamak
4.7. İsteğe Bağlı Seçenekler
4.8. Diğer Miktar Belirteçleri
4.9. Özelleştirilmiş Miktar Belirteçleri
4.10. Parantezler ve Ters Eğri
Çizgiler (Backslashes)
4.11. Meta karakter Aramak
5. Tablolar
5.1. Meta karakter Tablosu
5.2. Uyumluluk Tablosu
6. Sed
6.1. Sed Nedir?
6.2. Sed - Verilerin Ara Belleğe Alındığı Yer
6.3. Sed Parametreleri
6.4. Sed Programları
6.5. Sed ile Satır Seçme
6.6. Komutlar
6.7. Basit Sed Örnekleri
7. Regex'in Sed Uygulaması
8. Kaynaklar
Regular expressions (düzenli ifadeler) ifadesinin kısaltılmış
halidir. Karmaşık katarları belli kalıplar dahilinde tanımlar. Bu kalıplara uyan
ifadeleri bulduğu zaman isteğimize göre üzerinde işlem yapar.
Düzenli ifadeler, bir çok dilde ve uygulamada kullanılır: egrep, emacs, expect, find,
grep, javascript, lex, lips, mawk, mysql, perl, php, vi, tcl, gawk, sed...
Bu yazıdaki düzenli ifade örnekleri
sed uygulaması yardımı ile verilecektir.
Düzenli ifadeler, karmaşık katarları belli kalıplara çevirip
kullandığı için basittirler ve taşınabilirdirler. Regex mantığını
kavradıktan sonra diğer dil ve uygulamalarda kullanmak da kolaydır.
Düzenli ifadeler normal karakterler ve
meta karakterlerden oluşur. Normal karakterler, büyük - küçük harfleri
ve rakamları ifade eder. Meta karakterlerin anlamları ileriki
satırlarda açıklanacaktır.
Basit anlamda düzenli ifade, verdiğiniz kalıba uyan katarı arar. Mesela 'deneme' katarı hiç meta karakter içermez. 'deneme' katarı, 'deneme 123' katarı ile benzeşir ama 'Deneme' katarı ile benzeşmez.
grep metin arama programına bir düzenli ifade kalıbı verelim:
"comu".
Bu kalıp c,o,m ve u harflerinin ardışık olanlarını arar ve bulduğu satırları
ekrana basar.
Ekrana yazılan satırlar şunlar olabilir:
comu
comulib
libcomu
Anlaşılması en kolay karakterlerden ikisi ^ ve $ karakterleridir. ^ satır başı, $ ise satır sonu anlamına gelir. '^linux' dosya satırbaşlarında linux yazan satırları ekrana basar. Aynı şekilde 'linux$' ise satır sonunda linux yazan satırları ekrana basar.
'kuma[şr]', kumaş ve kumar kelimelerine eşittir. kumaşr veya kumarş kelimelerine eşit değildir. Aynı şekilde '[dD]emir' ifadesi demir ve Demir'e eşittir. Bu kelimeler diğer kelimelere bitişik olabilir. Mesela aynı kalıp demirkıran kelimesine de eşittir.
Bu özellik HTML başlıkları ile çalışırken işe yarayabilir:
'<H[123456]>' ifadesi <H1>, <H2>, ..., <H3>
ifadeleriyle
uyuşur. Aynı ifadeyi şu şekilde de yazabiliriz: '<H[1-6]>'.
Bu ifade yapacağı iş açısından '<H[123456]>' ifadesi ile birebir aynıdır. Tire (-)
işareti menzil belirtir.
Başka bir örnek: '[a-z]' ifadesi bütün küçük harfleri kapsar. Köşeli parantez içinde iki
tire kullanabiliriz. '[a-zA-Z]' ifadesi bütün büyük ve küçük harflerin
herhangi birisi anlamına gelir. '[a-z123]id' ifadesi : Küçük harflerden
biri veya 1,2,3 rakamlarından birisiyle başlayıp ardından i ve d
harfleri takip eden kelimeler anlamına gelir.
[1-6] 1 ve 6 arasında ki herhangi
bir rakam anlamına gelir. [^1-6] ise bu rakamlar haricindekiler
anlamına gelir. ^ karakteri önceden de bahsettiğimiz gibi satır başı
anlamına da gelir. Ama buradan, görüldüğü gibi farklı bir amaç için
kullanılmıştır. Bunları ayırmak çok basittir; hariç anlamına gelen ^
karakteri köşeli parantez içinde kullanılır.
Bir kelime listesi oluşturalım ve içinde farklı farklı satırlarda 'linux' ve
'unix' yazsın.
| ]# grep u[^x] kelime.txt unix ]# |
Burada her satır araştırılmıştır ve u harfinden sonra
x harfinin
gelmediği satırlar ekrana yazdırılmıştır.
Tarihler ülkeden ülkeye değişirler
ve farklı şekillerde gösterilebilirler. 23-04-2003, 23/04/2003, 23.03.2003
gibi...
'23.04.2003' ifadesi bu üç durum ile de uyuşur. Nokta burada meta
karakter olarak kullanılmıştır. '23[.-/]04[.-/]2003' ifadesinde ise meta karakter görevinde değildir.
Ama unutmamak gerekir ki nokta karakteri herhangi bir karakterle
uyuşur. Yani '23.04.2003' düzenli ifadesi '23a04a2003' katarına da eşit
olabilir. Bu sebeple böyle durumlarda '23[.-/]04[.-/]2003' ifade
kalıbını kullanmak daha mantıklıdır.
Birkaç ifadenin herhangi biriyle uyuşum işlemleri için boru '|' karakteri kullanılır. Ne var ki bu karakter her program ve uygulama
tarafından desteklenmemektedir. '|' veya anlamına gelir. 'ben|sen'
içersinde ben veya sen bulunan katarlar anlamına gelir.
|
]# cat deneme ben miyim? sen misin? o mu? ]# egrep '(ben|sen)' deneme ben miyim? sen misin? ]# egrep '(b|s)en' deneme ben miyim? sen misin? ]# |
Boru meta karakterinin kullanımına izin veren uygulamalardan biri
de egrep'tir. Burada deneme adında bir dosyaya yazılar yazılmıştır ve
içinde ben veya sen katarı bulunan satırlar ekrana yazılmıştır. egrep
komutunun uygulandığı ikinci satırda ise b ve s harflerinin ardından en
katarı aranmıştır ve bulunan sonuçlar ekrana yazılmıştır.
'[bs]en' ifadesi '(b|s)en' ifadesi ile aynı anlama gelmektedir.
Eğer '(b|s)en' ifadesinde parantez kullanılmazsa 'b' veya 'sen'
katarları aranır, ama asıl aranması gereken ifade 'ben' veya 'sen'
dir.
'^Konu','^Kimden' ve '^Tarih' ifadeleri kısaca şu şekilde
yazılabilir: '^(Konu|Kimden|Tarih)'.
Düzenli ifadeler katarlarla
çalıştığı için, sizin oluşturduğunuz ifadelerin katar eşleniğini bulur
ve isteğinize göre değiştirir veya ekrana yazdırır. Ama bazı
durumlarda ifadelerinizin eşlenikleri başka başka katarlarla bileşik yazılmış olabilir. Mesela arattığınız ifadenin katar
eşleniği 'demir' olsun. Bu durumda size 'demirkıran' katarını
içeren
satırlar da gösterilecektir. Bunu engellemek için '\<' ve '\>'
meta karakterleri kullanılır. < veya > karakterleri önüne ters
eğri çizgi (backslash) aldıkları zaman meta karaktere dönüşürler.
'\<deneme' ifadesi kelimenin başı 'deneme' olan katarları
'deneme\>' ifadesi kelime sonunda 'deneme' katarı olan ifadeleri
bulur. '\<deneme\>' ifadesi ise içinde sadece 'deneme'
katarı kelimelerini bulur
|
]# cat liste deneme deneme123 123deneme ]# egrep '\<deneme' liste deneme deneme123 ]# egrep 'deneme\>' liste deneme 123deneme ]# egrep '\<deneme\>' liste deneme ]# |
'?' işareti isteğe bağlı
kullanılabilen bir meta karakterdir. '?' işareti kendinden önce gelen
karakterin sıfır veya bir fazla tekrarı anlamına gelir.
|
]# cat > liste algoritma alghoritma ]# egrep 'algorith?ma' liste algoritma algorithma ]# |
Soru işaretinden önceki
'h'nin sıfır veya bir defa bulunduğu durumlar
ekrana yazılmıştır. Bu örnekte sırayla aranan karakterler şu şekildedir:
a, l, g, o, r, i, t, h? (h karakterinin sıfır veya bir
defa bulunduğu durumlar),
m, a.
Başka bir örnek: '(Oca|Ocak)' şeklinde bir ifade kullanacağımızı varsayalım. Bunun yerine
'Ocak?' ifadesini kullanabiliriz. Soru işareti karakteri sadece kendinden önce gelen karakterler için
kullanılmaz. Mesela, (13|13'üncü) ifadesi yerine "13('üncü)?" yazılabilir. Burada
parantezler ile gruplandırma yapılmıştır. Ve soru işareti karakteri,
kendinden önceki grubun 0 veya 1 defa olma olasılığını arayacaktır.
|
]# cat > miktar 13 13'üncü ]# egrep '^ +' miktar (bu ifade miktar dosyasında ki satır başlarında 1 veya daha fazla boşluk olan satırları listeler) 13 ] #egrep '^ *' miktar (bu ifade de miktar dosyasında ki satır başlarında 0 veya daha fazla boşluk olan satırları listeler) 13 13'üncü ]# |
Başka bir örnek:
|
]# cat merhaba.html (Varsayalım ki html taglarının arasına yanlışlıkla boşluk
koydunuz; sonuçta html sayfanız yanlış görüntülenecektir) < html> <head> </head> <body> Regex Ve Linux </body> </html> ]# egrep '< *html>' merhaba.html (bu ifade ile yanlış satırları bulmak mümkün olacaktır) < html> ]# |
|
Meta karakter |
Alt Limit |
Üst Limit |
|
? |
0 |
1 |
|
* |
0 |
sınırsız |
|
+ |
1 |
sınırsız |
Bu başlığı bir örnek üzerinde açıklayalım. x{1,3} ifadesi
x,xx ve de xxx ifadelerine denk gelir.
|
]# cat > limit.txt (limit.txt dosyası oluşturuluyor ve içine veriler
giriliyor) x xx xxx a aa aaa ]# egrep 'x{0,3}' limit.txt (x karakterinin ardı ardına sıfır ve üç (0 ve 3 dahil) arası tekrarı aranıyor) x xx xxx a aa aaa ]# egrep 'x{1,3}' limit.txt (x karakterinin ardı ardına bir ve üç arası(1 ve 3 dahil) tekrarı aranıyor) x xx xxx ]# |
Parantezler, ifadeleri gruplandırmak için kullanılır. Ters eğri
çizgiler ise gruplandırılmış ifadelerin saklanması için kullanılır. En
fazla 9 tane grup saklayabilirler. Bu bölümdeki regex örnekleri sed
üzerinde olacaktır.
|
]# cat > parantezler.txt linux ve regex linux ve unix unix ]# sed 's/\(linux\)/\1x/g' parantezler.txt linuxx ve regex linuxx ve unix unix ]# |
Burada linux ifadesi gruplandırılmış ve 1 ile saklanmıştır.'1x' 'linuxx' değerine eşittir.
Eğer arayacağımız katar, meta karakter içeriyorsa ne yapmalıyız? Mesela arayacağımız katar 'www.comu. edu.tr' olsun. Elbette buradaki noktalar meta karakter değildir. Ters eğriler sayesinde 'www\.comu\. edu\.tr' düzenli ifadesi 'www.comu. edu.tr' katarına denktir. Ters eğri çizgiler sadece bu amaçla kullanılmaz; \< \>, \( \) ifadeleri başlı başına meta karakterdir.
| . | Herhangi bir tek karakterle uyuşur. 'k.z' ifadesi 'kaz' veya 'kız' ile uyuşur ama kiraz ile uyuşmaz. |
| $ | Satır sonu anlamına gelir. 'öğrenci$' ifadesi 'o bir öğrenci' ifadesi ile uyuşur, ama 'o bir öğrencidir' ifadesi ile uyuşmaz. |
| ^ | Satır başı anlamına gelir. '^özgür' ifadesi 'özgür yazılım' ile uyuşur ama 'linux ve özgür yazılım' ile uyuşmaz. |
| * | Kendinden önce gelen karakterin sıfır veya daha fazla tekrarı anlamına gelir. '.*' ifadesi herhangi uzunluktaki bir kelime ile uyuşur. |
| \ | Eğer herhangi bir meta karakter düzenli ifadeler içinde kullanılacaksa önüne '\' getirilir. '\$' ifadesi '$' karakterine karşılık gelir. |
| [
] [x1-x2] [^x1-x2] |
Köşeli parantezin içindeki herhangi bir karakter ile uyuşması anlamına gelir. 's[eo]r' ifadesi 'ser' ve 'sor' ile uyuşur. Köşeli parantez içinde kullanılan tire işareti menzil belirtir. [0-9] herhangi bir rakam anlamına gelir. [A-Za-z] ifadesi herhangi bir büyük harf veya küçük harfle uyuşur. ^ karakteri hariç anlamına gelir. [^123a-z] ifadesi 1,2,3 rakamları ve küçük harfler hariç anlamına gelir. |
| \< \> | \< bir kelimenin başı ,\> ise bir kelimenin sonu anlamına gelir. \< \> ise direk olarak bir kelimeye karşılık gelir. |
| \( \) | İfadeyi gruplandırır. Ayrıca gruplandırılmış ifadelere denk gelen katarları saklar.En fazla 9 katar saklayabilir ve \1 ,\9 gibi gösterilir. |
| | | İki durumun beraber ifade edilmesi durumunda kullanılır. (benim|senin) ifadesi 'bu benim' ve 'bu senin' ifadeleri ile uyuşur. Ama 'bu bize ait' ifadesi ile uyuşmaz. |
| + | Kendinden önce gelen karakterin bir veya daha fazla tekrarı anlamına gelir. 'x+' ifadesi 'x,xx' ve 'xxx' ifadesi ile uyuşur. |
| ? | Kendinden önceki karakterin 0 veya 1 tekrarı anlamına gelir. Not: Bütün dil ve uygulamalarda desteklenmez. |
| \{ \} | Bu ifade bizim belirlediğimiz sayıda tekrar anlamına gelir. A\{3\} ifadesi 'A' harfini takip edecek 3 rakamdan oluşan katar anlamına gelir. Mesela: A123 veya A785 Not: Bu meta karakter bütün dil ve uygulamalar tarafından desteklenmeyebilir. |
| \{i,j\} | Bu ifade bizim belirlediğimiz menzil sayısında tekrar anlamına gelir. [0-9]\{3,5\} ifadesi ardı ardına 3, 4 veya 5 tane gelecek rakamlardan oluşan katarları ifade eder. Not: Bu meta karakter bütün dil ve uygulamalar tarafından desteklenmeyebilir. |
|
. |
[] |
^ |
$ |
\( \) |
\{ \} |
? |
+ |
| |
( ) |
|
| vi | x | x | x | x | x | |||||
| visual c++ | x | x | x | x | x | |||||
| awk | x | x | x | x | x | x | x | x | ||
| sed | x | x | x | x | x | x | ||||
| Tcl | x | x | x | x | x | x | x | x | x | |
| ex | x | x | x | x | x | x | ||||
| grep | x | x | x | x | x | x | ||||
| egrep | x | x | x | x | x | x | x | x | x | |
| fgrep | x | x | x | x | x | |||||
| perl | x | x | x | x | x | x | x | x | x |
SED aşağıdaki komut satırı seçeneklerini içerebilir :
'-v'
'--version'
Çalıştırılan SED’in sürümünü ve telif hakkı bilgilerini yazar.
'-h'
'--help'
Hata raporu adreslerini ve komut satırı seçeneklerini özetleyen bir kullanıcı mesajı yazar.
'-n'
'--quiet'
'--silent'
SED’in varsayılan değeri betik içindeki her dönüşün sonuna örüntü alalını yazar. Bu seçenek bu otomatik yazımı kaldırır.(Otomatik yazımı tekrar kullanmak için p komutu kullanılır).
'-e script'
'--expression=script'
script dosyası içerisindeki komutları girdi işlenirken çalıştırılacak olan komutlara ekler.
'-f script-file'
'--file=script-file'
script-file dosyasındaki komutları girdi işlenirken çalıştırılacak olan komutlara ekler.
Eğer -e,-f ,-expression yada -file seçenekleri verilmemişse komut satırındaki ilk argüman çalıştırılacak olan betik olarak alınır.
Yukarıdaki işlemlerden sora herhangi komut satırı parametresi kalırsa, bu işlenecek dosyanın adıymış gibi yorumlanır. Bir dosya adı standart giriş akımını temsil etmektedir. Eğer hiç dosya adı belirtilmemişse standart girdi işlenir.
Bir SED programı -e,-f,--expression gibi seçenekleri içeren bir yada daha fazla SED komutundan oluşur. Her SED komutu bir karakterlik komut adı ve özel komut kodu ardından seçili bir adres yada adresler dizisi içerir.
‘number’
Girdiden yalnızca satır numarası verilen satırlar seçilir.
‘first~step’
Satırlar verilen first değerindeki satırdan step değerindeki aralıklarla seçilir.
‘$’
Bu adres son girdi dosyasın son satırını seçer.
‘/regexp/’
Regexp düzenli ifadesiyle eşleşen satırları seçer.
‘%regexp%’
(% yerine başka tek karakter gelebilir) Bu da regexi eşleştirir. Regexde çok “/ ” varsa “/ ” lerin karışmasını önlemek için kullanılır.
‘/regexp/I’ yada ‘ \ %regexp% I’
“I” niteleyicisi regexin buyuk kucuk harf duyarsiz (case-insensitive) olarak eşlenmesini sağlar.
Eğer hiç adres verilmezse tüm satırlar seçilir.;eğer bir adres verilmişse sadece o adresle eşleşen satırlar seçilir.
Adres dizinleri '(,)' ile birbirinden ayrılır. İkinci adres bir regex ise biten eşlemenin kontrolü ilk adresteki seçilmiş satırları izleyen satırlardan başlar. Eğer ikinci adres ilk adresteki satırlardan daha az yada eşit bir numara ise sadece bir satır seçilir.
'!' karakteri bir adres dizini ardından geldiğinde adres dizininde eşlenmeyen satırlar seçilir.Bu ayrıca boş (null) adresler için de çalışır.
SED de bir metni bir başkası içine yerleştirmek mümkündür. Yerleştirme basit yerine koymalardan (küçük_büyük harf) veya çok karmaşık yerine koymalardan(1den itibaren tüm tamsayıların artması) oluşabilir.
‘#’ [adreslere izin yok] Bu komut bir sonraki yeni satıra kadar yeni bir yorum açar. Bazı SED uygulamaları yalnızca tek satır yorum yazmayı destekler. Bu uygulamalarda betiğin birçok ilk karakteri “#” ise dikkatli olunmalıdır. Eğer SED betiğinin ilk iki karakteri “ # n” ise -n seçeneği zorunludur. Betiğin ilk satırına “n” ile başlayan bir yorum koymak için ya “N” kullanılmalı yada “n” den önce en az bir boşluk bırakılmalıdır.
‘s/regexp/yerleştirilen/flags’ [“/ ” karakteri yerine bir başka tek karakter kullanılabilir.] Bu komutla regexpdeki düzenli ifade yerleştirilen değeri ile yer değiştirir. Regexp yada yerleştirilen ifadelerinde “ / ” (yada kullanılan diğer karakter) yer alacaksa başına “ \ ”konulmalıdır. Yine son yerleşmeye \, & yada yeni satır eklemek için başlarına“ \ ”karakteri konulmalıdır. s komutu aşağıdaki flag/flagleri içerebilir:
‘g’ Yeni yerleştirmeyi tüm satırlara uygular.
‘p’ Yerleştirme gerçekleşmişse yeni örüntü alanını yazar.
‘number’ Sadece numaralanmış eşlemeleri yeniden yerleştirir.
‘w dosya-adı’ Yerleştirme gerçekleşmişse sonuçları dosya adı ile verilen dosyaya yazar.
‘I’ Eşlemeleri durum-duyarsız olarak gerçekleştirir.
‘q’ [En fazla bir adrese izin var] SED’den çıkar.
‘d’ Örüntü alanını siler; yeni bir dönüş başlatır.
‘n’ Otomatik yazım özelliği aktifken örüntü alanını yazar ve girdiye yerleştirir.
‘{komutlar}’ Bir grup komutu tek bir adres eşlemesiyle başlatır.
‘y/kaynak-karakterler/ hedef-karakterler’ S komutu gibi çalışır; ama yalnızca birkaç harf değişimi gerektiğinde kullanılır.
‘a /’
‘text’ [En fazla bir adrese izin var.] Metine ekleme yapar.
‘i’
‘text’ [En fazla bir adrese izin var.] Metni yazar(Sonunda " \ " olan satırları çıktıdan siler.)
‘c / ’
‘text’ Verilen adresteki satırları siler. Örüntü alanı silindikten sonra yeni bir dönüş başlatır.
‘=’ Kullanımda olan girdi satırı numarasını verir.
‘l’ örüntü alanını çapraşık bir formda yazar: yazılamayan karakterler (ve / ) C-tarzı kaçış (C-style escaped) formunda yazılır, uzun satırlar bölünür ve “\” işaretiyle bölük oldukları gösterilir,her satır sonu “$” ile işaretlenir.
‘r dosya adı’ Adı verilen dosyanın içeriğini okur. Eğer okunma izni olmayan bir dosya bu komutla çağrılırsa dosya boş olarak algılanır,hata verilmez.
‘w dosya adı’ Adı verilen dosyaya örüntü alanını yazar.
‘D’ Örüntü alanındaki metni siler.
‘N’ Örüntü alanına yeni bir satır ekler ardından girdideki yeni satırı bu alana ilave eder.
‘P’ Örüntü alanının ilk satırını yazar.
‘h’ Tutma alanının içeriğini örüntü alanını içeriğiyle değiştirir.
‘H’ Tutma alanına yeni satır ekler ardından örüntü alanının içeriğini bu alana ilave eder.
‘g’ Örüntü alanının içeriğini tutma alanı içeriğiyle değiştirir.
‘G’ Örüntü alanına yeni satır ekler ardından tutma alanın içeriğini ilave eder.
‘x’ Tutma ve örüntü alanı içeriklerini değiştirir.
‘: label’ [Adrese izin yok.] b ve t komutları için bir etiket belirler.
‘b label’ Etiketler koşulsuz dallanır.
‘t label’ Etiketler, yerleştirme
başarılıysa dallanır.
/ ./!b eğer boş satırsa bir sonrakini okur.
s/!/!!/g tüm “!” ler “!!” ile yer değiştirir.
s/^/!/g satır başına ! ekler.
s/$/!/g satır sonuna ! ekler.
| ]$ cat ornek1.txt redhat üstünde kde pencere yöneticisi ]$ sed -e 's/redhat/suse/g' -e 's/kde/gnome/g' ornek1.txt suse üstünde gnome pencere yöneticisi |
s/ \/usr\/bin/\/bin/g dosya > yeni_dosya
| ]$ cat ornek4.txt 017 naciye uzun ]$ sed 's/\( [A-Za-z] [A-Za-z]* \) \( [A-Za-z] [A-Za-z]*\) \( [0-9]*\) / \1 \3 \2/' deneme_dosya uzun 017 naciye |
sed '5,15s/bonito chica/guapo chico/g'
sed '/^regex/s/regular expression/düzenli ifadeler/g' dosya_adı
| ]$ find /mnt/cdrom -name *.mp3 /mnt/cdrom/duman/1.mp3 /mnt/cdrom/duman/2.mp3 Eğer biz sadece mp3 dosyalarını görüntületmek isteseydik yani bulunduğu dizini göstermeksizin listeletmek isteseydik aşağıdaki komutu kullanmalıydık. ]$ find /mnt/cdrom -name *.mp3 | sed 's/.*\///g' 1.mp3 2.mp3 |
Bu komutla find komutuyla ortaya çıkan veriler boru işlemi ile sed uygulamasının girdisi olarak kullanılmıştır. Sed '/' karakterini ve de ondan önceki karakteri yok ederek çıktıyı vermiştir. \ karakteri normalde metakarakter olan / karakterini normal bir karakter yapmak için kullanılmıştır.
| ]$ echo ikisatir | sed
's/iki/& yeni\>/' iki yeni satir |
| ]$ cat ornek9.txt 1 2 3 4 5 6 7 8 9 2 3 elma ]$ sed 's/ */,/g' ornek1.txt 1,2,3,4,5,6,7 8,9,2,3,elma |
| ]$
cat ornek10.txt necati demir naciye uzun ]$ cat sed.scr s/^/!/ s/\(.*\)\(.\)/\2\1/ :a s/\(.*\)!\(.*\)\(.\)/\1\3!\2/ ta s/!// ]$ sed -f sed.scr ornek10.txt rimed itacen nuzu eyican |
| ]$
cat ornek11.txt 100,210,354,462 331,746,50 90,263,47,14 ]$ cat sed11.sed :a s/\([0-9]*\),\(.*\)/\1\ \2/ ta ]$ sed -f sed11.sed ornek11.txt 100 210 354 462 331 746 50 90 263 47 14 |
| ]$
ifconfig eth0 Link encap:Ethernet HWaddr 00:08:A1:2C:2D:29 inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:0 (0.0 b) TX bytes:168 (168.0 b) Interrupt:10 Base address:0xd800 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:1007 errors:0 dropped:0 overruns:0 frame:0 TX packets:1007 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:61606 (60.1 Kb) TX bytes:61606 (60.1 Kb) ]$ ifconfig|sed '1,16s/ *inet addr:\([0-9]\{1,3\}\).\([0-9]\{1,3\}\).\([0-9]\{1,3\}\).\([0-9]\{1,3\}\) .*/\1.\2.\3.\4/'|sed '1s/.*/eth0/'|sed '3,9s/.*//'|sed '10s/.*/lo/'|sed '12,16s/.*//' eth0 192.168.0.1 lo 127.0.0.1 |