Sed 'ler / gün / gece /' <eski> yeni ve sed 'ler / gün / gece /' eski> yeni arasındaki fark nedir


0

Sed - Bruce Barnett tarafından bir Giriş ve Öğretici , Asıl komutunda şöyledir: s ikame için :

Basit bir örnek, "eski" dosyadaki "gün" i "yeni" dosyadaki "gece" olarak değiştirmektir:

sed s/day/night/ <old >new

Veya başka bir yol (UNIX yeni başlayanlar için),

sed s/day/night/ old >new

Fark ne? Bruce Barnett neden bir yöntemin "UNIX yeni başlayanlar için" olduğunu belirtiyor?

Her oldiki durumda da girdi olarak kullanıldığını ve her iki durumda newda çıktı olarak kullanıldığını görebiliyorum . Ekstra <bir fark yaratıyor mu?

Yanıtlar:


4

Uygulamada fazla değişmez. Aslında, ilk değişken sizi bir dosyaya sınırlandırırken, ikincisi sed'nin birkaç girdiyi bir çıktıya birleştirmesine ve bunun yerinde düzenleme seçeneğini kullanmasına izin verir.

Teknik fark, önceki yöntemin, yalnızca Unix'in ünlü olduğu genel bir özellik olan kabuk yeniden yönlendirmesine dayanması <ve bunlara >dayanmasıdır - basitliği ve birçok programda tamamen jenerik ve yeniden kullanılabilir olması nedeniyle: kabuk dosyayı açar ve size bir el verir. dosya-tanımlayıcı.

(Zamanın diğer sistemlerinde ya yeniden yönlendirme tamamen eksikti ya da etkinleştirmek için birkaç komut gerekiyordu.)

Sonuncusu ayrıca çıkışı yönlendirir, ancak girişi yönlendirmez. Bunun yerine , girdi dosyasını açmayı kendi istediği için, her programın kendi başına uygulamak zorunda olduğu, muhtemelen öğrenmeniz ve öğrenmeniz gereken tutarsız sözdizimleri kullanarak; örneğin bir araç isteyebilir --input=original.txt --output=processed.txtve bir başkası -in original.txt. Ancak OTOH, bahsettiğim gibi, aynı zamanda salt okunur bir giriş ile sınırlı olmamanızdan daha esnektir.


Bununla birlikte, şahsen, "... Unix yenileri için ..." altındaki 2. sözdiziminin gruplandırılmasının, 1980'lerin seçkinliği ya da küfürü olduğunu, insanlara cat foo | barWindows & VMS kullanıcılarını kullanmamalarını ya da kullanmamalarını öğretenlerle aynı türde olduğunu söyleyebilirim. "Unix Felsefesine aydınlanmış" olmak.


1

Bruce'un bir "akışçı" olduğu kulağa geliyor, "her şeyin bir bayt akışı olduğuna" inanan biri, dosyaları sadece yeni başlayanların yapmak istediği gibi parametreler olarak geçirmeyi düşündüğü noktaya kadar. Genelde işleri yapmanın ikinci yolunu tercih etmemin birkaç nedeni:

  1. Daha kısa.
  2. Sözdizimsel olarak basittir.
  3. Örneğin -i[suffix], dosyaları değiştirmek için bir sürü ekstra guff olmadan yerinde değiştirmeyi sağlar.
  4. Gibi diğer araçlarla iyi oynuyor xargs.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.