Выбор ответа Middle grep, sed, awk, find, xargs обновлено
sed -i на macOS
Вопрос
Скрипт с sed -i 's/old/new/' app.conf работает в Linux, но на macOS падает с ошибкой invalid command code. Почему?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В BSD sed -i требует суффикс: нужно sed -i ''. GNU sed принимает -i с необязательным суффиксом, приклеенным к флагу (-i.bak).
Варианты ответа
- На macOS нет sed, команда вызывает другую утилиту
- macOS требует флаг
sed -Eдля любых замен - На macOS
-iзапрещён для файлов в домашнем каталоге - В BSD sed
-iтребует суффикс: нужноsed -i ''правильный ответ
Разбор
GNU sed принимает -i с необязательным суффиксом, приклеенным к флагу (-i.bak). BSD sed на macOS ждёт суффикс отдельным аргументом, поэтому выражение принимается за суффикс, а имя файла за команду. Переносимо: sed -i.bak 's/old/new/' app.conf && rm app.conf.bak или GNU sed из Homebrew. -E включает расширенные регулярки и к этому отношения не имеет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.