как сформироваться, sed выражение, содержащее, вышло из символов

Если Вы хотите удовлетворить зависимости затем, можно найти заявление, которое Вы хотите в синаптическом менеджере и затем проверяете его и устанавливаете его. Или если Вам нравится сохранять Вашу производительность и делать это на командной строке, затем используйте:

sudo yum "package1" "dependency1" "dependency2" ...

Замените текст в кавычках с именем пакета или зависимостью.

4
09.05.2013, 20:40
3 ответа

Проверьте гну sed руководство (http://www.gnu.org/software/sed/manual/html_node/Other-Commands.html#Other-Commands) - i команда на самом деле i\ команда, таким образом, Вам просто нужна дополнительная обратная косая черта

echo match | sed -e '/match/i\\tline1\n\tline2'
# ---------------------------^
5
27.01.2020, 20:49
  • 1
    wierd, я уверен, что попробовал это, но да, Вы - правильный :) –  starfry 09.05.2013, 20:51

Я собирался предложить:

 echo match | sed -e 's/match/\tline1\n\tline2\n&/'
1
27.01.2020, 20:49
  • 1
    OK, но OP сказал это echo match | … был только для тестирования. Получить поведение это /match/i… кажется, ищет, Вам было бы нужно 's/.*match/\tline1\n\tline2\n&/'. –  Scott 29.07.2014, 03:47

Стандартный синтаксис (в случае, если Вы хотите быть портативными к системам не-GNU):

sed 'i\
\   line1\
line2'

Таким образом, Вам нужна новая строка после i\, и нет никакой распознанной escape-последовательности (выше символа табуляции, вводится буквально). Только, необходимо выйти из новой строки, символов обратной косой черты и начальных пробелов ¹ с обратной косой чертой.

С оболочками, которые поддерживают (нестандартный sh) ksh $'...' тип кавычек (как ksh93, zsh или bash), можно записать это:

sed $'i\\\n\\\tline1\\\nline2'

¹ обратные косые черты не нужны перед начальными пробелами в совместимом POSIX seds, но некоторые реализации как на BSDs все еще разделил бы те начальные пробелы без обратной косой черты.

3
27.01.2020, 20:49

Теги

Похожие вопросы