Sed kullanımı örnekleri
Sed (veya GNU sed, gsed) , oldukça yetenekli bir yazı düzenleme editörüdür. Tek komutla sizi büyük bir iş yükünden kurtarabilir, işte bazı kullanım örnekleri:
BOŞLUK KOYMA
# içinde “deneme” geçen satırların üzerinde bir boş satır oluştur
sed ‘/deneme/{x;p;x;}’
# içinde “deneme” geçen satırların altında bir boş satır oluştur
sed ‘/deneme/G’
# içinde “deneme” geçen satırların hem üzerinde hem altında bir boş satır oluştur
sed ‘/deneme/{x;p;x;G;}’
# her 5 satırdan sonra bir boş satır ekler
gsed ’0~5G’ # GNU sed
sed ‘n;n;n;n;G;’ # diğerleri
NUMARALANDIRMA
# her satırın başına satır numarası yazar, arada bir “tab” boşluk koyar
sed = dosya_adı | sed ‘N;s/\n/\t/’
# her satırın başına satır numarası yazar, solda sağa dayalı numaralar
sed = dosya_adı | sed ‘N; s/^/ /; s/ *\(.\{6,\}\)\n/\1 /’
# her satırın başına satır numarası yazar ancak eğer satır boşsa numara görünmez
sed ‘/./=’ dosya_adı | sed ‘/./N; s/\n/ /’
# satır sayısını yazdırır
sed -n ‘$=’
YAZI DÖNÜŞÜMÜ
# UNIX altında Windows satır sonlarını (CR/LF) Unix formatına dönüştürür
sed ‘s/.$//’
# Windows/Dos altında Unix satır sonlarını Windows formatına dönüştürür
sed “s/$//”
# her satırın önündeki boş alanı (boşluk, tab) kaldırır
sed ‘s/^[ \t]*//’
# her satırın sonundaki boş alanı (boşluk, tab) kaldırır
sed ‘s/[ \t]*$//’
# her satırın sonundaki ve başındaki boş alanı (boşluk, tab) kaldırır
sed ‘s/^[ \t]*//;s/[ \t]*$//’
# her satırın başına 5 boşluk karakteri koyar
sed ‘s/^/ /’
# yazıyı 79-sütun genişliğin ortasına taşır, yöntem 1′de satır başındaki
# boşluklar önemsizdir, yöntem 2′de onlar da taşınır.
sed -e :a -e ‘s/^.\{1,77\}$/ & /;ta’ # yöntem 1
sed -e :a -e ‘s/^.\{1,77\}$/ &/;ta’ -e ‘s/\( *\)\1/\1/’ # yöntem 2
# her satırda “foo”ları bulur ve “bar” olarak değiştirir
sed ‘s/foo/bar/’ # satırdaki ilk foo’yu değiştirir
sed ‘s/foo/bar/4′ # satırdaki 4. foo’yu değiştirir
sed ‘s/foo/bar/g’ # satırdaki tüm foo’ları değiştirir
# yalnızca “baz” kelimesini bulduğu satırlarda
# “foo”ları bulur ve “bar” olarak değiştirir
sed ‘/baz/s/foo/bar/g’
# yalnızca “baz” kelimesini bulduğu satırlarda
# “foo”ları “bar” olarak değiştirmez, diğerlerini değiştirir
sed ‘/baz/!s/foo/bar/g’
# “scarlet”, “ruby” veya “puce” değerlerini “red” olarak değiştirir.
sed ‘s/scarlet/red/g;s/ruby/red/g;s/puce/red/g’ # birçok sed’e göre
gsed ‘s/scarlet\|ruby\|puce/red/g’ # sadece GNU sed’e göre
# satırları başaşağı eder, ilk satır sona, son satır başa
sed ’1!G;h;$!d’ # yöntem 1
sed -n ’1!G;h;$p’ # yöntem 2
# her satırı ters çevirir: ahmet > temha
sed ‘/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//’
# eğer bir satır ters taksim ile “\” biterse, altındaki satırı ona ekler
sed -e :a -e ‘/\$/N; s/\\n//; ta’
# eğer bir satır eşittir “=” ile başlıyorsa, onu önceki satırın sonuna ekler
# = işaretini de boşluk ile değiştirir
sed -e :a -e ‘$!N;s/\n=/ /;ta’ -e ‘P;D’
# rakam setlerine virgül ekler: “1234567″ > “1,234,567″
gsed ‘:a;s/\B[0-9]\{3\}>/,&/;ta’ # GNU sed
sed -e :a -e ‘s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta’ # diğer sed’ler
BELLİ BİR BÖLÜMÜ YAZDIRMA
# Bir dosyanın ilk 10 satırını yazdırır
sed 10q
# Bir dosyanın ilk satırını yazdırır
sed q
# Bir dosyanın son 10 satırını yazdırır
sed -e :a -e ‘$q;N;11,$D;ba’
# Bir dosyanın son 2 satırını yazdırır
sed ‘$!N;$!D’
# Bir dosyanın son satırını yazdırır
sed ‘$!d’ # yöntem 1
sed -n ‘$p’ # yöntem 2
# sadece içinde “deneme” bulunan satırları yazdırır
sed -n ‘/deneme/p’ # yöntem 1
sed ‘/deneme/!d’ # yöntem 2
# sadece içinde “deneme” bulunmayan satırları yazdırır
sed -n ‘/deneme/!p’ # yöntem 1
sed ‘/deneme/d’ # yöntem 2
# sadece içinde “deneme” bulunan satırın bir üstündeki
# satırı yazdırır
sed -n ‘/deneme/{g;1!p;};h’
# sadece içinde “deneme” bulunan satırın bir altındaki
# satırı yazdırır
sed -n ‘/regexp/{n;p;}’
# içinde AAA, BBB ve CCC olan satırları yazdırır (sıra gözetmez)
sed ‘/AAA/!d; /BBB/!d; /CCC/!d’
# içinde sırasıyla AAA, BBB ve CCC olan satırları yazdırır
sed ‘/AAA.*BBB.*CCC/!d’
# içinde AAA veya BBB veya CCC bulunan satırları yazdırır
sed -e ‘/AAA/b’ -e ‘/BBB/b’ -e ‘/CCC/b’ -e d # diğer sed’ler
gsed ‘/AAA\|BBB\|CCC/!d’ # GNU sed
# AAA içeren paragrafları yazdırır (paragraf=boş satırlar arası)
sed -e ‘/./{H;$!d;}’ -e ‘x;/AAA/!d;’
# içinde AAA veya BBB veya CCC bulunan paragrafları yazdırır
sed -e ‘/./{H;$!d;}’ -e ‘x;/AAA/b’ -e ‘/BBB/b’ -e ‘/CCC/b’ -e d
gsed ‘/./{H;$!d;};x;/AAA\|BBB\|CCC/b;d’ # GNU sed
# 65 karakter veya daha uzun olan satırları yazdırır
sed -n ‘/^.\{65\}/p’
# 65 karakterden daha kısa olan satırları yazdırır
sed -n ‘/^.\{65\}/!p’ # yöntem 1
sed ‘/^.\{65\}/d’ # yöntem 2
SEÇİLEN BÖLÜMLERİ SİLME
# Iowa ve Montana değerleri arasındakileri siler
sed ‘/Iowa/,/Montana/d’
# birbirinin aynısı olan satırları siler.
# en baştaki satır durur, diğerleri silinir
sed ‘$!N; /^\(.*\)\n\1$/!P; D’
# sadece birbirinin aynısı olan satırları silmez
sed ‘$!N; s/^\(.*\)\n\1$/\1/; t; D’
# yazının ilk 10 satırını siler
sed ’1,10d’
# yazının son satırını siler
sed ‘$d’
# yazının son 2 satırını siler
sed ‘N;$!P;$!D;$d’
# yazının son 10 satırını siler
sed -e :a -e ‘$d;N;2,10ba’ -e ‘P;D’ # yöntem 1
sed -n -e :a -e ’1,10!{P;N;D;};N;ba’ # yöntem 2
# her 8. satırı siler
gsed ’0~8d’ # GNU sed
sed ‘n;n;n;n;n;n;n;d;’ # diğer sed’ler
# yazıdaki TÜM boş satırları siler
sed ‘/^$/d’ # yöntem 1
sed ‘/./!d’ # yöntem 2
# yazının başındaki boş satırları siler
sed ‘/./,$!d’
# yazının sonundaki boş satırları siler
sed -e :a -e ‘/^\n*$/{$d;N;ba’ -e ‘}’