Как добавить еще одну строку в следующей строке к определенной строке в MacOS sed? - PullRequest
0 голосов
/ 25 мая 2018

Я пытаюсь добавить строку 'rest_framework', после 'django.contrib.staticfiles', в файл, однако, когда я пытаюсь что-то вроде

sed '/'django.contrib.staticfiles',/a 'rest_framework',' file

, я получаю сообщение об ошибке

sed: 1: "/'django.contrib.static ...": команда a ожидает \, за которой следует текст

Я пробовал ту же команду с \ вокруг символов, а также,

Ответ: Установленный gsed как базовый MacOS sed не работает при создании строк под указанными строками.

Ответы [ 3 ]

0 голосов
/ 25 мая 2018

Использование одинарных кавычек внутри друг друга становится очень грязным.Используйте двойные кавычки, чтобы сохранить буквальное значение строки поиска.Пока у вас нет строки поиска / замены, содержащей $ строки, использование двойных кавычек должно быть хорошо

sed "/'django.contrib.staticfiles',/a 'rest_framework'," file

Очевидно, что версия FreeBSD sed на MacOS все еще выдавала ошибки дляприведенный выше синтаксис и использование GNU sed путем установки brew install gnu-sed и запуска команды с gsed работало нормально.

0 голосов
/ 25 мая 2018

После awk может помочь вам и здесь.

awk '{gsub(/\047django.contrib.staticfiles\047\,/,"&\047" ORS "rest_framework\047,")} 1' Input_file

В случае сохранения вывода в файл Input_file добавьте > temp_file && mv temp_file Input_file в коде выше.

0 голосов
/ 25 мая 2018

для добавления 'rest_framework', после 'django.contrib.staticfiles',:

$ echo \'django\.contrib\.staticfiles\'\, | 
  sed  "s/\('django.contrib.staticfiles',\)/\1'rest_framework',/g"
'django.contrib.staticfiles','rest_framework',

Чтобы получить 'rest_framework', на следующей строке, добавьте \n после\1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...