sed вставить строку команды OSX
Я пытаюсь вставить текст в третью строку файла с помощью sed, и синтаксис, который я нашел на других форумах:
sed -i '' "3i text to insert" file
однако, когда я использую это, я получаю сообщение об ошибке:
sed: 1: "3i text to insert": extra characters after at the end of i command
Я не могу понять, что вызывает проблему. Я использую OSX, поэтому у меня есть пустое '' в качестве расширения.
спасибо!
5 ответов
вы должны поставить новую строку сразу после \
:
sed '3i\
text to insert' file
это фактически поведение, определенное спецификация POSIX. Тот факт, что GNU sed позволяет указать текст, который будет вставлен в ту же строку, является расширением.
вот как это сделать в одной строке синтаксиса
sed -i '' -e "2s/^//p; 2s/^.*/text to insert/" file
дублировать вторую строку:
2s/^//p;
заменить новую строку с текстом:
2s/^.*/text to insert/
Если вы хотите изменить файл определенного типа(.sh в моем случае) используйте эту команду.
sed -i '.sh' '3i\
mymodified text to insert' temp.sh
убедитесь, что у вас есть разрыв строки после косой черты ("\")