Добавление новой строки в конец файла с помощью sed - PullRequest
0 голосов
/ 08 октября 2019

Мне нужно добавить новую строку в конец файла. Но когда я запускаю команду sed в MacOS, я получаю сообщение об ошибке.

Команда, которую я запускаю sed -i'' -e '$a\wrapper{gradleVersion='5.5'}' build.gradle

Получаемая ошибка: sed: 1: "$a\wrapper{gradleVersio ...": extra characters after \ at the end of a command

1 Ответ

3 голосов
/ 08 октября 2019

Самый простой ответ: не использовать sed

echo "wrapper{gradleVersion='5.5'}" >> build.gradle

Довольно просто, верно?

Если вы хотите игнорировать мои советы и продолжать использовать sed, чтобы завершить комментарий @shellter:

  • В MacOS sed вам необходимо добавить новые строки перед текстом, который вы хотите добавить при использовании команды a.

  • MacOS sedне будет добавлять новую строку по умолчанию после текста, который вы хотите добавить, и поскольку вы хотите, чтобы файл оставался стандартным для POSIX, вам нужно будет добавить его

Вы можете сделать:

sed -i '' -e '$a\
<text to add>
' <file>
  • Поскольку вы хотите добавить одинарные кавычки, вам нужно обернуть команду sed двойными кавычками, а затем экранировать $ и \, что делает его особенно раздражающим при использовании.

Попробуйте это:

sed -i '' "\$a\\
wrapper{gradleVersion='5.5'}
" build.gradle

В gnu-sed (установите его с помощью brew brew install gnu-sed), вы должны сделать:

gsed -i "\$a wrapper{gradleVersion='5.5'}" build.gradle
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...