Etiketi :a
ana talimatın dışına koymaya gerek yoktur , -e
gerekli 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/ /
\n
tarafından oluşturulan newline karakterini N
bir boşlukla değiştirmek
;
ta
etiketi 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;
sed
Giriş 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 ,
ta
betiğin sonunu yalnızca girişin son satırı okunduğunda ( s
baş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 \n
bir boşlukta değiştirildiyse), N
herhangi bir satır eklenemez, s
başarısız olur, ta
atlanır, komut dosyasının sonuna ulaşılır ve zımni p
satır ifadesi geçerli looong 1 satırlık desen alanında yürütülür .
-i
Opsiyon girdi dosyasını yerine file
bütün 1 satır desen alanı ile.