sed
doesn't haven an -i
option.
Có thể bạn đang sử dụng một số biến thể của nhà cung cấp cụ thể là sed
. Nếu bạn muốn sử dụng các tiện ích mở rộng không được chuẩn hóa của nhà cung cấp của phiên bản không chuẩn hóa cụ thể của nhà cung cấp sed
, bạn cần đảm bảo rằng bạn cài đặt biến thể không chuẩn hóa cho nhà cung cấp cụ thể đó và cần đảm bảo rằng bạn gọi nó và không gọi phiên bản tuân thủ chuẩn của sed
là một phần của môi trường hoạt động của bạn.
Lưu ý rằng như mọi khi sử dụng các tiện ích mở rộng dành riêng cho nhà cung cấp không được chuẩn hóa, hoàn toàn không đảm bảo rằng mã của bạn sẽ có thể di chuyển được, chính xác là vấn đề bạn đang gặp phải.
Trong trường hợp cụ thể này, tuy nhiên, có giải pháp tốt hơn nhiều: sử dụng đúng công cụ cho công việc. sed
là trình soạn thảo luồng (đó là lý do tại sao nó là được gọi là "sed"), tức là chỉnh sửa luồng chứ không phải tệp.Nếu bạn muốn chỉnh sửa các file, sử dụng một trình soạn thảo tập tin, chẳng hạn như ed
:
ed FILE <<-HERE
,s/.shayam.//g
w
q
HERE
Xem thêm:
Nguồn
2010-11-08 09:16:20
Sử dụng mktemp giúp đảm bảo rằng chúng tôi không inadvertantly dẫm lên bất kỳ tập tin có tên FILE.new ... tmp = $ (mktemp) && sed -e 's /.* shayam. * // g' FILE> "$ tmp" && mv "$ tmp" FILE; rm "$ tmp" 2>/dev/null –