Sử dụng sed để thay thế các ký tự đặc biệt


13

Điều này hoạt động để thay thế tombằng samtrong một tập tin:

sed 's/tom/sam/g' file_1 > file_2

Nhưng điều này không:

sed 's/*****/sam/g' file_1 > file_2

Để thay thế các ký tự đặc biệt *****bằng từ sam. Tôi đã thử với một dấu gạch chéo \*nhưng lỗi.


2
Bạn đã thử với lệnh nào \*và những lỗi bạn gặp phải là gì?
cuonglm

tôi đã thử: sed 's / **** / sam / g' test.txt> test2.txt và kết quả là lỗi: sed: bad regex '*****': Biểu thức chính quy không hợp lệ trước - điều này không có blackslash \ trước *
Rosebud

1
Bạn có thể cố gắng thoát khỏi mọi nhân vật đặc biệt:sed 's/\*\*\*\*\*/sam/g'
Taliezin

Câu trả lời:


16

Bạn cần thoát khỏi các ký tự đặc biệt bằng dấu gạch chéo ngược \trước ký tự đặc biệt, ví dụ:

sed 's/\*/t/g' test.txt > test2.txt


0

Bạn cần phải thoát khỏi các ký tự đặc biệt bằng dấu gạch chéo ngược \trước ký tự đặc biệt. Đối với trường hợp của bạn, thoát khỏi mọi ký tự đặc biệt với dấu gạch chéo ngược \.

ví dụ: **** boy is ****

sed 's/\*\*\*\*/sam/g' filename

ans:

sam boy is sam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.