Đây là những gì sed s
lệnh được xây dựng cho:
shopt -s extglob
ORIG="foo(1,2)"
REP="if (a > 1) {
foo(1,2)
} else {
bar(1,2)
}"
REP="${REP//+(
)/\\n}"
sed "s/$ORIG/$REP/g" inputfile > outputfile
Lưu ý rằng REP="${REP//\+( )/\\n}"
dòng chỉ cần thiết nếu bạn muốn xác định các REP
trong cách định dạng mà tôi đã làm trên dòng hai . Nó có thể đơn giản hơn nếu bạn chỉ sử dụng \n
và \t
trong REP
để bắt đầu.
Chỉnh sửa để đáp ứng với câu hỏi của OP
Để thay đổi tập tin ban đầu của bạn mà không cần tạo một tập tin mới, sử dụng sed của --in-place
cờ, như vậy:
sed --in-place "s/$ORIG/$REP/g" inputfile
Xin hãy cẩn thận với --in-place
cờ. Tạo bản sao lưu trước khi bạn chạy vì tất cả thay đổi sẽ là vĩnh viễn.
Nguồn
2012-05-14 02:26:14
gì nếu tôi muốn thay đổi nó inplace trong tập tin hiện tại của tôi mà không tạo ra bất kỳ tập tin thêm. – ravi
@ravi Xem chỉnh sửa của tôi. –