Etiketi :aana talimatın dışına koymaya gerek yoktur , -egerekli olan seçenek de değildir; Sonunda, /$/gereksiz (her satır bir EOL karakterine sahiptir).
Diğer cevapları iyileştirmek, bir alır
sed -i ':a; N; s/\n/ /; ta' file
Aşağıdaki gibi yazılırsa hangisi daha açıktır,
sed -i ':a
N
s/\n/ /
ta' file
Komut aşağıdaki gibi çalışır:
N sonraki satırı, halihazırdaki satırı içeren (çok satırlı) desen alanına ekler;
s/\n/ /\ntarafından oluşturulan newline karakterini Nbir boşlukla değiştirmek ;
taetiketi izleyen komut satırına gider :a 2. adımda ikame başarılı olduğu sürece , yani ikame gerçekleştiyse, yürütme, senaryonun sonunu "isabet" olmadan 1. adıma atlar yani olmadan girdi başka bir hattı okuma.
Aşağıdakilere dikkat et;
sedGiriş dosyasının satırlarını , ilk satırdan başlayarak sırayla okur ;
:a sadece bir etiket, çalıştırılacak bir komut değil;
N prensip olarak herhangi bir hat üzerinde yürütülür, ancak
s/\n/ /(prensip olarak herhangi bir hat üzerinde yürütülür) herhangi bir hat üzerinde başarılı olur , ancak sonuncusu ,
tabetiğin sonunu yalnızca girişin son satırı okunduğunda ( sbaşarısız olan tek satır ) ulaşılabilir kılar;
- Sonuncusu okunmamışsa , ilk okunandan sonra desen alanına başka bir giriş satırı okunmaz , fakat sonra okunacak başka bir satır yoktur ve örtük komut yürütülür.
p
Böylece senaryo temel olarak giriş satırının ilk satırını okur ve aşağıdaki satırları birer birer eklemeye devam eder; son satır eklendikten sonra (ve \nbir boşlukta değiştirildiyse), Nherhangi bir satır eklenemez, sbaşarısız olur, taatlanır, komut dosyasının sonuna ulaşılır ve zımni psatır ifadesi geçerli looong 1 satırlık desen alanında yürütülür .
-iOpsiyon girdi dosyasını yerine filebütün 1 satır desen alanı ile.