2011-11-10 27 views
5

đề nghị Tôi có một tập tin example như sau:sed để thay đổi chuỗi trong một tập tin duy nhất một lần

c 
a 
b 
a 
b 
d 

và tôi muốn thay đổi sự xuất hiện đầu tiên của a-e. Sau đó, tôi làm điều này:

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

và tất cả a đổi thành e.

Vì vậy, có cách nào để làm sed chỉ thay thế một lần trong một tệp không?

Cảm ơn.

+4

có thể trùng lặp: http://stackoverflow.com/questions/148451/how-to-use-sed-to-replace-only-the-first-occurrence-in-a-file – Aziz

Trả lời

10

Áp dụng các thông tin từ Aziz 'liên kết trùng lặp cho câu hỏi của bạn, tôi nghĩ rằng điều này sẽ cung cấp cho bạn kết quả mong muốn cho trường hợp của bạn:

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

Để dễ đọc hơn, điều này có thể được viết 'sed -i 0,/a/s/a/e /' ' –

4

Áp dụng các thông tin từ Aziz' liên kết trùng lặp cho câu hỏi của bạn, tôi nghĩ rằng đây sẽ cung cấp cho bạn kết quả mong muốn cho trường hợp của bạn: Câu trả lời

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

Rabe là tốt. Tuy nhiên, việc thêm khoảng cách giữa dải địa chỉ và lệnh 's' sẽ làm cho nó rõ ràng hơn. như sau:

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

Và phiên bản của Wilson có vẻ thừa.

Các vấn đề liên quan