2016-08-20 1 views
1

Я хочу вернуть свое пространство в SED. Я могу сделать это с помощью s/^.*$/hello world/; - но могу ли я сделать это, используя команду c - так, не используя разрывы строк в моем сценарии sed? Мне не совсем ясно, насколько это возможно.Использование sed append/change/insert без новой строки

(Тот же вопрос для команд a и i)

+0

Возможный дубликат [Sed: Использование a, c или i в одном вкладыше] (http://stackoverflow.com/questions/38938645/sed-using-ac-or-i-in-a-one- лайнер) – kdhp

ответ

1

Если оболочка Баша, вот удобный способ использования c в однострочнике:

$ seq 3 | sed $'/2/c\\\nNew Text' 
1 
New Text 
3 

Это выглядит для любой линии содержащий 2 и изменяет его на New Text.

Эта функция использует bash's $'...', чтобы ввести новую строку в строке. Новая строка представлена ​​\n. Обратная косая черта, которая необходима после c, представлена ​​\\.

$'...' функция также доступна в ksh93, zsh, mksh и FreeBSD sh.

+0

Хорошо, спасибо. – einpoklum