Я пишу сценарії оболонки для свого сервера, це спільний хостинг, на якому працює 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