2015-09-26 3 views
-1

Да, я искал сайт, и я не думаю, что видел что-либо специально для решения моей самой (простой, я предполагаю) проблемы, которую я просто не могу преодолеть.Как использовать sed для добавления нескольких строк в файл?

Я беру класс Linux, и я задал этот вопрос:

Используйте команду и патч в файл сценария, чтобы добавить эти строки в конец файла CD_list:

hard rock:1008:70 
misc:1009:22 

Я пробовал снова и снова, и прочитал главу. Я не могу понять это.

Файл CD_list создан, и мне нужно добавить эти две строки выше, как показано в файле сценария. Юп вздрогнул.

+1

sed? почему бы не использовать простой append '>>'? – alfasin

ответ

0

Один из возможных ответов: sed -i 's/^$/hard rock:1008:70\nmisc:1009:22/' CD_list

EDIT: попробовать это вместо sed -i '$ a\hard rock:1008:70\nmisc:1009:22' CD_list

Я думаю, что это команда вы после этого.

Вот фантастический ресурс: http://www.grymoire.com/Unix/Sed.html

+1

Похоже, что он заменит все пустые строки, а не добавит две строки в конце. – melpomene

+0

Ты прав ... пусто ... Я должен сам изучить эти ресурсы! – xeuari

+0

Нет команды '\ a'. – melpomene

1

Вставьте следующий script.sed:

$a \ 
hard rock:1008:70\ 
misc:1009:22 

Затем запустите sed -f script.sed CD_list. Это приведет к выводу CD_list и прилагаемых строк к стандартным. Если вы хотите изменить файл на месте, используйте sed -i -f script.sed CD_list.


Вот как это работает: Мы используем $, чтобы соответствовать последней строке файла. Затем мы запускаем команду a (append), которая выводит текст, следующий за ним в конце текущего цикла. Обычно новая строка завершает команду a, поэтому мы используем \ (обратная косая черта) для выхода из новой строки и вывода ее как есть.

(информация взята с https://www.gnu.org/software/sed/manual/sed.html#sed-Programs.)

+0

Большое вам спасибо! Увидев это, теперь он выглядит слишком упрощенным благодаря связанному ресурсу :) –

Смежные вопросы