2013-08-26 33 views
25

Başta boşluklarla dolu bir satır var, örneğin "Merhaba dünya". Bu satırı bir dosyadaki belirli bir satıra eklemek istiyorum. Örneğin için sonraki dosyaya "merhaba dünya" insertBelirli bir satıra boşluk içeren sed boşluk satırı

hello 
world 

sonucu:

hello 
    hello world 
world 

Bu sed komut dosyası kullanıyorum:

sed -i "${line} i ${text}" $file 

sorun i alıyorum olmasıdır boşluklarım ile yeni hattım:

hello 
hello world 
world 
örnek 2 boşluk eklemek için

cevap

39

Sen space karakteri kaçabilir:

sed -i "${line} i \ \ ${text}" $file 

Ya da text değişkenin tanımı yapabiliriz: . oldu

text="\ \ hello world" 
+7

gibi birden boşlukları giriş gerekir. Sed, boşlukların geri kalanını otomatik olarak algılar gibi görünüyor. Örn, 'a \ text' metni ön kısımda 4 boşluk ile ekler. – haridsv

+0

Teşekkürler! Böyle zarif bir çözüm! – ShahNewazKhan

4
$ a=" some string " 
$ echo -e "hello\nworld" 
hello 
world 
$ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/" 
hello 
    some string . 
world 

Yukarıdaki boşlukta, arka plandaki beyaz noktaların korunduğunu göstermek için eklenmiştir. Bunun yerine sed "/world/ s/.*/${a}\n&/" kullanın.

5

Yalnızca sen sadece ilk uzay kaçmak için bir \ bu

sed -i "${line} i \ ${text}" $file 
İlgili konular