Sözdizimi
ed [-] [-s] [-p string] [file]
red [-] [-s] [-p string] [file]
Açıklama
ed yardımcı programı satır tabanlı bir metin düzenleyicidir. Metin dosyalarını oluşturmak, görüntülemek, değiştirmek ve diğer şekillerde işlemek için kullanılır. red olarak çağrıldığında, düzenleyici "kısıtlı" (restricted) modda çalışır. Bu moddaki tek fark, düzenleyicinin ‘!’ ile başlayan (ed tarafından kabuk komutları olarak yorumlanan) veya ‘/’ içeren dosya adlarının kullanımını kısıtlamasıdır. Mevcut dizinin dışında düzenleme yapmanın, yalnızca kullanıcının mevcut dizine yazma izni olmaması durumunda yasaklandığını unutmayın. Bir kullanıcının mevcut dizine yazma izni varsa, mevcut dizinde sembolik bağlar (symbolic links) oluşturulabilir; bu durumda red, kullanıcının sembolik bağın işaret ettiği dosyayı düzenlemesini engellemez.
Bir dosya bağımsız değişkeniyle çağrılırsa, dosyanın bir kopyası düzenleyicinin arabelleğine (buffer) okunur. Değişiklikler doğrudan dosyanın kendisine değil, bu kopya üzerinde yapılır. ed'den çıkıldığında, bir w komutu ile açıkça kaydedilmeyen tüm değişiklikler kaybolur.
Düzenleme iki farklı modda gerçekleştirilir: komut ve giriş (input) modları. İlk çağrıldığında ed komut modundadır. Bu modda, komutlar standart girdiden okunur ve düzenleyici arabelleğinin içeriğini işlemek üzere yürütülür. Tipik bir komut şu şekilde görünebilir:
,s/old/new/g
bu komut, old karakter dizisinin tüm geçtiği yerleri new ile değiştirir.
a (append - sonuna ekle), i (insert - araya ekle) veya c (change - değiştir) gibi bir giriş komutu verildiğinde ed giriş moduna geçer. Bu mod, bir dosyaya metin eklemenin birincil yoludur. Giriş modunda hiçbir komut kullanılamaz; bunun yerine standart girdi doğrudan düzenleyici arabelleğine yazılır. Satırlar, yeni satır karakteri dahil olmak üzere metinden oluşur. Giriş modu, bir satıra tek bir nokta (.) girilerek sonlandırılır.
Tüm ed komutları satırların tamamı veya satır aralıkları üzerinde çalışır; örneğin d komutu satırları siler, m komutu satırları taşır ve bu şekilde devam eder. Yukarıdaki örnekte olduğu gibi değiştirme yoluyla bir satırın yalnızca bir kısmını değiştirmek mümkündür. Ancak burada bile s komutu tek seferde satırların tamamına uygulanır.
Genel olarak ed komutları sıfır veya daha fazla satır adresini takip eden tek karakterli bir komuttan ve olası ek parametrelerden oluşur; yani komutlar şu yapıya sahiptir:
[address[,address]]command[parameters]
Adres(ler), komuttan etkilenecek satırı veya satır aralığını belirtir. Komutun kabul ettiğinden daha az adres verilirse, varsayılan adresler sağlanır.
Seçenekler
Aşağıdaki seçenekler mevcuttur:
-s: Teşhis iletilerini bastırır. ed'den gelen standart girdinin bir betikten (script) okunması durumunda bu seçenek kullanılmalıdır.
-p string Bir komut istemi (prompt) belirtir. Bu istem, P komutu ile açılıp kapatılabilir.
dosya Okunacak dosyanın adını belirtir. Dosya adının önüne bir ünlem (!) işareti getirilirse, bu bir kabuk komutu olarak yorumlanır. Bu durumda, okunan veri sh(1) aracılığıyla yürütülen komutun standart çıktısıdır. Adı ünlem işareti ile başlayan bir dosyayı okumak için, adın önüne ters bölü () işareti getirin. Varsayılan dosya adı, yalnızca ünlem işareti ile başlamıyorsa dosya olarak ayarlanır.
Satır Adresleme
Bir adres, arabellekteki bir satırın numarasını temsil eder. ed yardımcı programı, hiçbir adres belirtilmediğinde komutlara genellikle varsayılan adres olarak sağlanan bir geçerli adresi (current address) korur. Bir dosya ilk okunduğunda, geçerli adres dosyanın son satırına ayarlanır. Genel olarak geçerli adres, bir komuttan etkilenen en son satıra ayarlanır.
Bir satır adresi, aşağıdaki listedeki tabanlardan birinden oluşturulur ve isteğe bağlı olarak bunu sayısal bir sapma (offset) takip eder. Sapma; basamakların, işleçlerin (yani +, - ve ^) ve boşlukların herhangi bir kombinasyonunu içerebilir. Adresler soldan sağa doğru okunur ve değerleri geçerli adrese göre hesaplanır.
Adreslerin satır numaralarını temsil ettiği kuralının tek istisnası 0 (sıfır) adresidir. Bu, "ilk satırdan önce" anlamına gelir ve mantıklı olduğu her yerde geçerlidir.
Bir adres aralığı, virgül veya noktalı virgül ile ayrılmış iki adrestir. Bir aralıktaki ilk adresin değeri, ikincisinin değerini aşamaz. Bir aralıkta yalnızca tek bir adres verilirse, ikinci adres verilen adrese ayarlanır. n_>_2 olmak üzere bir n-li adres grubu verilirse, karşılık gelen aralık n-li grubun son iki adresiyle belirlenir. Yalnızca tek bir adres bekleniyorsa, son adres kullanılır.
Virgülle ayrılmış bir aralıktaki her bir adres, geçerli adrese göre yorumlanır. Noktalı virgülle ayrılmış bir aralıkta ise, ilk adres geçerli adresi ayarlamak için kullanılır ve ikinci adres birincisine göre yorumlanır.
Aşağıdaki adres sembolleri tanınır:
. Arabellekteki geçerli satır (adres).
$ Arabellekteki son satır.
n Arabellekteki n. satır (n, [0,$] aralığında bir sayıdır).
- veya ^ Önceki satır. Bu, -1 ile eşdeğerdir ve birikimli etkiyle tekrarlanabilir.
-n veya ^n n negatif olmayan bir sayı olmak üzere, n. önceki satır.
Sonraki satır. Bu, +1 ile eşdeğerdir ve birikimli etkiyle tekrarlanabilir.
+n n negatif olmayan bir sayı olmak üzere, n. sonraki satır.
, veya % Arabellekteki ilk satırdan son satıra kadar olan satırlar. Bu, 1,$ adres aralığıyla eşdeğerdir.
; Arabellekteki geçerli satırdan son satıra kadar olan satırlar. Bu, .,$ adres aralığıyla eşdeğerdir.
/re/ re düzenli ifadesini (regular expression) içeren bir sonraki satır. Arama gerekirse arabelleğin başına sarar ve geçerli satıra kadar aşağıya doğru devam eder. // son aramayı tekrarlar.
?re? re düzenli ifadesini içeren bir önceki satır. Arama gerekirse arabelleğin sonuna sarar ve geçerli satıra kadar yukarıya doğru devam eder. ?? son aramayı tekrarlar.
'lc Daha önce bir k (mark) komutu ile işaretlenmiş satır (lc, küçük harfli bir karakterdir).
Düzenli İfadeler
Düzenli ifadeler, metin seçmede kullanılan şablonlardır. Örneğin, şu komut:
g/string/
string ifadesini içeren tüm satırları yazdırır. Düzenli ifadeler, yeni metinle değiştirilecek eski metni seçmek için s komutu tarafından da kullanılır.
Karakter dizisi sabitlerini (literal) belirtmenin yanı sıra, düzenli ifadeler karakter dizisi sınıflarını da temsil edebilir. Bu şekilde temsil edilen karakter dizilerinin, karşılık gelen düzenli ifadeyle eşleştiği söylenir. Bir düzenli ifadenin bir satırdaki birkaç karakter dizisiyle eşleşmesi mümkünse, en soldaki en uzun eşleşme seçilir.
Düzenli ifadeleri oluştururken aşağıdaki semboller kullanılır:
c ‘{’, ‘}’, ‘(’, ‘)’, ‘<’ ve ‘>’ dahil olmak üzere aşağıda listelenmeyen herhangi bir c karakteri kendisiyle eşleşir.
\c ‘{’, ‘}’, ‘(’, ‘)’, ‘<’ ve ‘>’ hariç, ters bölü ile kaçış yapılmış herhangi bir c karakteri kendisiyle eşleşir.
. Herhangi bir tek karakterle eşleşir.
[char-class] char-class içindeki herhangi bir tek karakterle eşleşir. char-class içinde bir ‘]’ karakterine yer vermek için, bu karakterin ilk karakter olması gerekir. Karakter aralığının uç karakterleri arasına ‘-’ getirilerek bir karakter aralığı belirtilebilir; örneğin ‘a-z’ küçük harfleri belirtir. Karakter kümelerini belirtmek için char-class içinde aşağıdaki harfiharfine (literal) ifadeler de kullanılabilir:
[:alnum:] [:cntrl:] [:lower:] [:space:] [:alpha:] [:digit:] [:print:] [:upper:] [:blank:] [:graph:] [:punct:] [:xdigit:]
‘-’ karakteri char-class'ın ilk veya son karakteri olarak görünürse kendisiyle eşleşir. char-class içindeki diğer tüm karakterler kendileriyle eşleşir.
char-class içinde şu biçimdeki şablonlar:
[.col-elm.] veya, [=col-elm=]
(burada col-elm bir sıralama öğesidir - collating element) geçerli yerel ayarlara (locale) göre yorumlanır (şu anda desteklenmemektedir). Bu yapıların açıklaması için regex(3) ve re_format(7) belgelerine bakın.
[^char-class] Yeni satır hariç, char-class içinde yer almayan herhangi bir tek karakterle eşleşir. Char-class yukarıda tanımlandığı gibidir.
^ ^ bir düzenli ifadenin ilk karakteriyse, düzenli ifadeyi satırın başına çıpalar. Aksi takdirde kendisiyle eşleşir.
$ $ bir düzenli ifadenin son karakteriyse, düzenli ifadeyi satırın sonuna çıpalar. Aksi takdirde kendisiyle eşleşir.
< Hemen ardından gelen tek karakterlik düzenli ifadeyi veya alt ifadeyi bir kelimenin başına çıpalar. (Bu özellik mevcut olmayabilir)
> Hemen ardından gelen tek karakterlik düzenli ifadeyi veya alt ifadeyi bir kelimenin sonuna çıpalar. (Bu özellik mevcut olmayabilir)
(re) Bir re alt ifadesini tanımlar. Alt ifadeler iç içe yerleştirilebilir. Daha sonra \n biçimindeki bir geri referans (backreference - n, [1,9] aralığında bir sayıdır) n. alt ifade tarafından eşleşen metne genişletilir. Örneğin, ‘(.*)\1’ düzenli ifadesi, birbirine bitişik aynı alt dizelerden oluşan herhangi bir karakter dizisiyle eşleşir. Alt ifadeler, sol sınırlayıcılarına göre sıralanır.
Hemen öncesindeki tek karakterlik düzenli ifade veya alt ifade ile sıfır veya daha fazla kez eşleşir. * bir düzenli ifadenin veya alt ifadenin ilk karakteriyse kendisiyle eşleşir. * işleci bazen beklenmeyen sonuçlar verebilir. Örneğin, ‘b*’ düzenli ifadesi, boş bir eşleşme en soldaki tek eşleşme olduğundan, ‘abbb’ dizesinin başıyla eşleşir (‘bbb’ alt dizesi yerine).
{n,m} veya {n,} or {n} Hemen öncesindeki tek karakterlik düzenli ifade veya alt ifade ile en az n, en fazla m kez eşleşir. m belirtilmezse en az n kez eşleşir. Virgül de belirtilmezse tam olarak n kez eşleşir.
Belirli regex(3) uygulamasına bağlı olarak ek düzenli ifade işleçleri de tanımlanmış olabilir.
Komutlar
Tüm ed komutları tek karakterlidir, ancak bazıları ek parametreler gerektirir. Bir komutun parametreleri birkaç satıra yayılıyorsa, son satır hariç her satır ters bölü () ile sonlandırılmalıdır.
Genel olarak, satır başına en fazla bir komut izin verilir. Ancak çoğu komut, komuttan etkilenen son satırı yazdırmak için p (yazdır), l (listele) veya n (numaralandır) gibi bir yazdırma sonekini kabul eder.
Bir kesme (genellikle ^C), geçerli komutun iptal edilmesi ve düzenleyicinin komut moduna geri dönmesi etkisini gösterir.
ed yardımcı programı aşağıdaki komutları tanır. Komutlar, hiçbir adres belirtilmediğinde sağlanan varsayılan adres veya adres aralığıyla (parantez içinde) birlikte gösterilmiştir.
(.)a Adreslenen satırdan sonra arabelleğe metin ekler (append). Metin, giriş modunda girilir. Geçerli adres, girilen son satıra ayarlanır.
(.,.)c Arabellekteki satırları değiştirir (change). Adreslenen satırlar arabellekten silinir ve yerlerine metin eklenir. Metin, giriş modunda girilir. Geçerli adres, girilen son satıra ayarlanır.
(.,.)d Adreslenen satırları arabellekten siler. Silinen aralıktan sonra bir satır varsa, geçerli adres bu satıra ayarlanır. Aksi takdirde geçerli adres, silinen aralıktan önceki satıra ayarlanır.
e dosya dosya dosyasını düzenler ve varsayılan dosya adını ayarlar. dosya belirtilmezse, varsayılan dosya adı kullanılır. Yeni dosya okunmadan önce arabellekteki tüm satırlar silinir. Geçerli adres, okunan son satıra ayarlanır.
e !komut !komut komutunun standart çıktısını düzenler (aşağıdaki !komut açıklamasına bakın). Varsayılan dosya adı değişmez. Komutun çıktısı okunmadan önce arabellekteki tüm satırlar silinir. Geçerli adres, okunan son satıra ayarlanır.
E dosya dosya dosyasını koşulsuz olarak düzenler. Bu, e komutuna benzer, ancak kaydedilmemiş değişiklikler uyarı yapılmadan atılır. Geçerli adres, okunan son satıra ayarlanır.
f dosya Varsayılan dosya adını dosya olarak ayarlar. dosya belirtilmezse, kaçış karakterlerinden arındırılmış varsayılan dosya adı yazdırılır.
(1,$)g/re/komut-listesi Bir re düzenli ifadesiyle eşleşen adreslenmiş satırların her birine komut-listesi'ni uygular. Geçerli adres, komut-listesi yürütülmeden önce o anda eşleşen satıra ayarlanır. g komutunun sonunda, geçerli adres komut-listesi'nden etkilenen son satıra ayarlanır.
komut-listesi içindeki her komut ayrı bir satırda olmalı ve son satır hariç her satır bir ters bölü () ile sonlandırılmalıdır. g, G, v ve V hariç her komuta izin verilir. komut-listesi içinde tek başına bir yeni satır, p komutuna eşdeğerdir.
(1,$)G/re/ Bir re düzenli ifadesiyle eşleşen adreslenmiş satırları etkileşimli olarak düzenler. Her eşleşen satır için satır yazdırılır, geçerli adres ayarlanır ve kullanıcıdan bir komut-listesi girmesi istenir. G komutunun sonunda, geçerli adres (en son) komut-listesi'nden etkilenen son satıra ayarlanır.
komut-listesi biçimi g komutu ile aynıdır. Tek başına bir yeni satır, boş bir komut listesi işlevi görür. Tek bir ‘&’ son boş olmayan komut listesini tekrarlar.
H Hata açıklamalarının yazdırılmasını açar/kapatır. Varsayılan olarak açıklamalar yazdırılmaz. Hata ayıklamaya yardımcı olması için ed betiklerinin bu komutla başlaması önerilir.
h Son hatanın açıklamasını yazdırır.
(.)i Arabellekteki geçerli satırdan önce metin araya ekler (insert). Metin, giriş modunda girilir. Geçerli adres, girilen son satıra ayarlanır.
(.,.+1)j Adreslenen satırları birleştirir. Adreslenen satırlar arabellekten silinir ve yerlerine birleştirilmiş metinlerini içeren tek bir satır yerleştirilir. Geçerli adres, sonuçta oluşan satıra ayarlanır.
(.)klc Bir satırı küçük harfli bir lc harfiyle işaretler. Satır daha sonra sonraki komutlarda 'lc (yani tek tırnak ve ardından lc) olarak adreslenebilir. İşaret, satır silinene veya başka bir şekilde değiştirilene kadar temizlenmez.
(.,.)l Adreslenen satırları net bir şekilde yazdırır. Tek bir satır birden fazla ekranı dolduruyorsa (örneğin bir ikili dosya görüntülerken olabileceği gibi), son satırda bir “--More--” istemi yazdırılır. ed yardımcı programı, sonraki ekranı görüntülemeden önce RETURN tuşuna basılmasını bekler. Geçerli adres, yazdırılan son satıra ayarlanır.
(.,.)m(.) Arabellekteki satırları taşır. Adreslenen satırlar, 0 (sıfır) adresi de olabilen sağ taraftaki hedef adresin sonrasına taşınır. Geçerli adres, taşınan son satıra ayarlanır.
(.,.)n Adreslenen satırları satır numaralarıyla birlikte yazdırır. Geçerli adres, yazdırılan son satıra ayarlanır.
(.,.)p Adreslenen satırları yazdırır. Geçerli adres, yazdırılan son satıra ayarlanır.
P Komut istemini açar/kapatır. Komut satırı seçeneği -p string ile bir istem belirtilmediği sürece, komut istemi varsayılan olarak kapalıdır.
q ed'den çıkar.
Q ed'den koşulsuz olarak çıkar. Bu, q komutuna benzer, ancak kaydedilmemiş değişiklikler uyarı yapılmadan atılır.
($)r dosya dosya dosyasını adreslenen satırdan sonrasına okur. dosya belirtilmezse, varsayılan dosya adı kullanılır. Komuttan önce varsayılan bir dosya adı yoksa, varsayılan dosya adı dosya olarak ayarlanır. Aksi takdirde, varsayılan dosya adı değişmez. Geçerli adres, okunan son satıra ayarlanır.
($)r !komut !komut komutunun standart çıktısını adreslenen satırdan sonrasına okur (aşağıdaki !komut açıklamasına bakın). Varsayılan dosya adı değişmez. Geçerli adres, okunan son satıra ayarlanır.
(.,.)s/re/replacement/
(.,.)s/re/replacement/g
(.,.)s/re/replacement/n Adreslenen satırlarda bir re düzenli ifadesiyle eşleşen metni replacement ile değiştirir. Varsayılan olarak, her satırdaki yalnızca ilk eşleşme değiştirilir. g (global) soneki verilirse, değiştirilecek her eşleşme değiştirilir. n pozitif bir sayı olmak üzere n soneki, yalnızca n. eşleşmenin değiştirilmesine neden olur. Adreslenen satırların hiçbirinde herhangi bir değiştirme yapılmaması bir hatadır. Geçerli adres, etkilenen son satıra ayarlanır.
re ve replacement, boşluk ve yeni satır dışındaki herhangi bir karakterle sınırlandırılabilir (aşağıdaki s komutuna bakın). Son sınırlayıcılardan biri veya ikisi atlanırsa, etkilenen son satır p yazdırma soneki belirtilmiş gibi yazdırılır.
replacement içindeki kaçışsız bir ‘&’, o anda eşleşen metinle değiştirilir. m, [1,9] aralığında bir sayı olmak üzere \m karakter dizisi, eşleşen metnin m. geri referans ifadesiyle değiştirilir. replacement tek bir ‘%’ karakterinden oluşuyorsa, son değiştirmedeki replacement kullanılır. Yeni satırlar, ters bölü () ile kaçırıldıkları takdirde replacement içine gömülebilir.
(.,.)s Son değiştirmeyi tekrarlar. s komutunun bu biçimi, bir n sayım soneki veya r, g ve p karakterlerinin herhangi bir kombinasyonunu kabul eder. Bir n sayım soneki verilirse, yalnızca n. eşleşme değiştirilir. r soneki, son değiştirme yerine son aramanın düzenli ifadesinin kullanılmasını sağlar. g soneki, son değiştirmenin global sonekini açar/kapatır. p soneki, son değiştirmenin yazdırma sonekini açar/kapatır. Geçerli adres, etkilenen son satıra ayarlanır.
(.,.)t(.) Adreslenen satırları kopyalar (yani aktarır); satırlar, 0 (sıfır) adresi de olabilen sağ taraftaki hedef adresin sonrasına kopyalanır. Geçerli adres, kopyalanan son satıra ayarlanır.
u Son komutu geri alır ve geçerli adresi komuttan önceki durumuna geri getirir. g, G, v ve V global komutları geri alma işlemi tarafından tek bir komut olarak kabul edilir. u kendi kendisinin tersidir.
(1,$)v/re/komut-listesi Bir re düzenli ifadesiyle eşleşmeyen adreslenmiş satırların her birine komut-listesi'ni uygular. Bu, g komutuna benzer.
(1,$)V/re/ Bir re düzenli ifadesiyle eşleşmeyen adreslenmiş satırları etkileşimli olarak düzenler. Bu, G komutuna benzer.
(1,$)w dosya Adreslenen satırları dosya dosyasına yazar. dosya dosyasının önceki tüm içeriği uyarı yapılmadan kaybolur. Varsayılan bir dosya adı yoksa, varsayılan dosya adı dosya olarak ayarlanır; aksi takdirde değişmez. Hiçbir dosya adı belirtilmezse, varsayılan dosya adı kullanılır. Geçerli adres değişmez.
(1,$)wq dosya Adreslenen satırları dosya dosyasına yazar ve ardından bir q komutu yürütür.
(1,$)w !komut Adreslenen satırları !komut komutunun standart girdisine yazar (aşağıdaki !komut açıklamasına bakın). Varsayılan dosya adı ve geçerli adres değişmez.
(1,$)W dosya Adreslenen satırları dosya dosyasının sonuna ekler. Bu, w komutuna benzer, ancak dosya dosyasının önceki içeriğinin üzerine yazılmaması beklenir. Geçerli adres değişmez.
(.+1)zn Adreslenen satırdan başlayarak tek seferde n satır kaydırır. n belirtilmezse geçerli pencere boyutu kullanılır. Geçerli adres, yazdırılan son satıra ayarlanır.
!komut komut komutunu sh(1) aracılığıyla yürütür. komut'un ilk karakteri ‘!’ ise, bu karakter önceki !komut'un metniyle değiştirilir. ed yardımcı programı, komut için ters bölü () kaçışlarını işlemez. Ancak kaçışsız bir % karakteri varsayılan dosya adıyla değiştirilir. Kabuk yürütmeden döndüğünde standart çıktıya bir ‘!’ yazdırılır. Geçerli satır değişmez.
($)= Adreslenen satırın satır numarasını yazdırır.
(.+1)newline Adreslenen satırı yazdırır ve geçerli adresi o satıra ayarlar.
Dosyalar
/tmp/ed.* arabellek dosyası ed.hup terminal bağlantısı koptuğunda ed'nin arabelleği yazmaya çalıştığı dosya
Teşhisler
Bir hata oluştuğunda, ed bir ‘?’ yazdırır ve girdisi bir betikten geliyorsa komut moduna döner veya çıkış yapar. Son hatanın açıklaması h (help) komutu ile yazdırılabilir.
g (global) komutu, başarısız arama ve değiştirmelerden kaynaklanan hataları maskelediğinden, betiklerde koşullu işlemler gerçekleştirmek için kullanılabilir; örn.
g/old/s//new/
old ifadesinin geçtiği tüm yerleri new ile değiştirir. u (undo) komutu bir global komut listesinde yer alıyorsa, komut listesi yalnızca bir kez yürütülür.
Teşhisler devre dışı bırakılmamışsa, değiştirilmiş bir arabellek yazılmadan önce ed'den çıkmaya veya başka bir dosyayı düzenlemeye çalışmak hatayla sonuçlanır. Komut ikinci kez girilirse başarılı olur, ancak arabelleğe yapılan tüm değişiklikler kaybolur.
Ayrıca Bakınız
sed(1), sh(1), vi(1), regex(3), compat(5)
USD:12-13
B. W. Kernighan and P. J. Plauger, Software Tools in Pascal, 1981, Addison-Wesley.
B. W. Kernighan, A Tutorial Introduction to the UNIX Text Editor.
B. W. Kernighan, Advanced Editing on UNIX.
Sınırlamalar
ed yardımcı programı, dosya bağımsız değişkenlerini ters bölü kaçışları için işler, yani bir dosya adında ters bölü () işaretinden önce gelen tüm karakterler harfiharfine (literal) yorumlanır.
Bir metin (ikili olmayan) dosyası yeni satır karakteriyle sonlandırılmamışsa, ed dosyayı okurken/yazarken sonuna bir tane ekler. İkili dosya durumunda, ed okuma/yazma sırasında yeni satır eklemez.
satır başına ek yük: 4 int
Tarihçe
ed komutu Version 1 AT&T UNIX sürümünde yer almıştır.
Hatalar
ed yardımcı programı çok baytlı (multibyte) karakterleri tanımaz.
macOS 26.4 9 Nisan 2021 macOS 26.4