2013-01-17 7 views
5

Tôi có lệnh này:sed - thay thế văn bản với ruột

sed -i "s/a:b/b:c/g" file.txt 

(bằng tiếng Anh: thay thế "a: b" với "b: c" trong file.txt)

Điều này không làm việc vì các dấu hai chấm trong văn bản cho thuê. Tôi nên viết lại lệnh như thế nào?

+1

gì không hoạt động? Ít nhất GNU sed 4.2.1 (ví dụ trên Debian) thực hiện chính xác những gì bạn muốn. – speakr

Trả lời

1

này đã làm việc cho tôi:

-->cat 1 
a:bLINE1 
a:bLINE2 

-->cat 1 | sed 's/a:b/b:c/g' 
b:cLINE1 
b:cLINE2 
+0

[Tương tự tại đây.] (Http://stackoverflow.com/questions/14389141/sed-replacing-text-with-colon#comment20016526_14389141) – speakr

+0

Yeayh, đúng vậy. Nó không phải là nó. Nó không thành công do cái gì khác, mà tôi đã tìm ra. – user1508893

+0

Nghe có vẻ giống như một câu hỏi hay - ít nhất là bây giờ tôi chắc chắn rằng ruột kết không được coi là một nhân vật đặc biệt bởi sed! –

4

Trong trường hợp bạn muốn được an toàn, bạn có thể thoát khỏi : ruột

sed -re "s/a\:b/b\:c/g" temp.txt