Я пишу сценарии оболочки для моего сервера, который является общим хостингом под управлением FreeBSD. Я также хочу иметь возможность тестировать их локально, на моем компьютере под управлением Linux. Следовательно, я пытаюсь написать их портативным способом, но sed
я не вижу способа сделать это.
Часть моего сайта использует сгенерированные статические HTML-файлы, и эта строка sed вставляет правильный DOCTYPE после каждой регенерации:
sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Он работает с GNU sed
в Linux, но FreeBSD sed
ожидает, что первым аргументом после -i
опции будет расширение для резервной копии. Вот как это будет выглядеть:
sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html}
Однако GNU, sed
в свою очередь, ожидает, что выражение последует сразу после -i
. (Это также требует исправлений с обработкой новой строки, но здесь уже есть ответ )
Конечно, я могу включить это изменение в свою серверную копию скрипта, но это может испортить то, что я использую VCS для управления версиями. Есть ли способ добиться этого с помощью Sed в полностью портативном виде?
-i