Как прокомментировать строку и вставить под ней другую строку?

Я хотел бы прокомментировать строку 2 в abc.c и добавить текст New second line в строку 3 файла.

abc.c:

First line
Second line
Third line

Мой измененный файл должен выглядеть так

First line
//Second line
New second line
Third line

Я пробовал использовать команду

sed 's/Second line/\/\/Second line\
New second line/g' abc.c > tmp.c && mv tmp.c abc.c

Но он выдает ошибку как "команда sed искажена" в sunOS 5.10.

Кто-нибудь может сказать мне, какую команду лучше использовать?


person Kripalini    schedule 11.04.2017    source источник


Ответы (2)


Пытаться:

sed "s/Second line/\/\/&\\
New second line/g" abc.c > tmp.c && mv tmp.c abc.c
person Nick    schedule 11.04.2017

sed -i.bak -e"s/Second line/\/\/&\nNew second line/;" abc.c

После этого содержимое файла:

First line  
//Second line  
New second line  
Third line  
person Yunnosch    schedule 12.04.2017
comment
Выполнение «p» также дублирует каждую строку в файле, что затем необходимо подавить с помощью «-n». В чем смысл? '\ n' не работает на всех платформах (например, macOS), тогда как встроенный буквальный перевод строки работает. {} Не нужны. - person Nick; 13.04.2017
comment
Мне не удалось использовать ваш ответ на моей машине (GNU sed версии 4.2.1 в Windows). Вероятно, потому что я не знаю, как использовать встроенную новую строку. Я был бы признателен за то, чтобы узнать это на основе вашего объяснения. Моя версия - однострочная, которая работает на моей машине. Поэтому я подумал, что предлагаю то, что работает для меня, в качестве альтернативного ответа. Я признаю, что использование -n AND p неэффективно избыточно. Отредактирую ответ. Спасибо, что указали на это. - person Yunnosch; 13.04.2017
comment
Я думаю, что у OP могут быть те же проблемы с пониманием встроенных символов новой строки, что и у меня. Таким образом, вы, вероятно, настроены на множество положительных отзывов (по крайней мере, принятие OP и мое одобрение), если вы это объясните. - person Yunnosch; 13.04.2017