2011-11-10 12 views
5

sugerują Mam plik example następująco:sed zmienić ciąg w pliku tylko raz

c 
a 
b 
a 
b 
d 

i chcę zmienić pierwszy występowaniu gazów a do e. Wtedy to zrobić:

sed -i 's/a/e/' example 

i wszystko a zmieniona na e.

Czy jest jakiś sposób na to, aby sed zastępował tylko jeden raz w pliku?

Dzięki.

+4

możliwy duplikat: http://stackoverflow.com/questions/148451/how-to-use-sed-toplace-only-the-first-rocurrence-in-a-file – Aziz

Odpowiedz

10

Stosując informacje z Aziz „duplikat linkiem do Twojego pytania, myślę, że to daje pożądanego rezultatu w Twoim przypadku:

sed -i '0,/a/s//e/' example 
+3

Dla większej czytelności może to napisz "sed -i 0,/a/s/a/e /" ' –

4

Stosując informacje z Aziz” duplikat linkiem do Twojego pytania, Myślę, że to daje pożądanego rezultatu dla sprawy: odpowiedź

sed -i '0,/a/s//e/' example 

Rabe jest dobry. Ale dodanie spacji między zakresem adresów a poleceniem "s" powoduje, że staje się on bardziej przejrzysty. tak:

sed -i '0,/a/ s//e/' example 

I wersja Wilsona wydaje się zbędny.