Tôi đang viết kịch bản shell cho máy chủ của mình, đây là một dịch vụ lưu trữ được chia sẻ đang chạy FreeBSD. Tôi cũng muốn có thể kiểm tra chúng cục bộ, trên PC của tôi chạy Linux. Do đó, tôi đang cố gắng viết chúng theo cách di động, nhưng với sed
tôi thấy không có cách nào để làm điều đó.
Một phần của trang web của tôi sử dụng các tệp HTML tĩnh được tạo và dòng sed này chèn DOCTYPE chính xác sau mỗi lần tái tạo:
sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Nó hoạt động với GNU sed
trên Linux, nhưng FreeBSD sed
hy vọng đối số đầu tiên sau -i
tùy chọn là phần mở rộng cho bản sao lưu. Đây là cách nó sẽ trông như thế nào:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Tuy nhiên, GNU sed
lần lượt hy vọng biểu thức sẽ theo sau ngay sau đó -i
. (Nó cũng yêu cầu sửa lỗi với xử lý dòng mới, nhưng điều đó đã được trả lời ở đây )
Tất nhiên tôi có thể bao gồm thay đổi này trong bản sao máy chủ của tập lệnh, nhưng điều đó sẽ gây rối, tức là việc tôi sử dụng VCS để tạo phiên bản. Có cách nào để đạt được điều này với sed theo cách hoàn toàn di động không?
-i