thay thế văn bản dài bằng các ký tự đặc biệt bằng sed


0

Tôi đang sử dụng sed trong unix để thay thế một số văn bản bằng các ký tự đặc biệt trong một tệp. Tôi google nó và tìm lệnh sau

sed 's/from/to/g' file.txt

ở đây 'từ' là văn bản gốc được thay thế, 'thành' là văn bản thay thế

Tôi đang cố gắng áp dụng điều này cho một tệp có văn bản dài với các ký tự đặc biệt, tức là thay thế "/D/ec

sed 's//D/dec/prog/g++.exe   -Wall --std=c++0x/SYSTEM_PATH/BIN/g' file.txt

nhưng điều này xuất hiện với lỗi "sed: -e biểu thức # 1, char 10: tùy chọn không xác định đối với` s '".

Tôi mới bắt đầu sử dụng unix nhưng vì một số lý do tôi cần đăng nhập từ xa một máy chủ unix để xử lý một số tệp. Tôi muốn biết

1) làm thế nào tôi có thể định nghĩa từ và chuỗi thành một biến, đại loại như FROMSTR = '/D/dec/prog/g++.exe -Wall --std = c ++ 0x' TOSTR = 'HỆ THỐNG HỆ THỐNG / BIN'

vì vậy tôi có thể gọi sed như     sed 's / $ FROMSTR / $ TO / g' file.txt

nhưng dường như sed không biết diễn giải nó như là biến

2) sau khi thay thế văn bản bằng sed, nó không ghi kết quả trở lại tệp gốc. Làm thế nào để làm cho nó hoạt động?

Câu trả lời:


0

Lệnh thay thế không nhu cầu sử dụng / là người phân định

sed 's!/D/dec/prog/g++.exe   -Wall --std=c++0x!SYSTEM_PATH/BIN!g' file.txt

cảm ơn, nhưng nó không esacpe '/' trong chuỗi thay thế. Tôi tiếp tục thử và thấy rằng tôi nên viết '/' là '\ /' nhưng điều này khá bất tiện nếu chuỗi thay thế dài và tôi cần thay thế '/' thành '\ /' trước. Có bất kỳ tham số nào tôi có thể đặt để cho phép sed thoát '/' tự động không? Nhưng theo cách này, ví dụ trên không viết văn bản kết quả trở lại file.txt, làm thế nào tôi có thể làm cho nó hoạt động? Cảm ơn
user1285419
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.