LinuxForum.Fans
Тема

Вставить текст одного файла в другой

Автор: valet 7 сообщений 4752 просмотров
#171398

Нужно вставить все строки файла file2 в нужное место (после строки, которая задается регулярным выражением, или хотя-бы конкретно) файла file1. Собственно как это сделать хоть каким-то способом?
Например есть файл file1 с текстом:

text
stroka-1
...
stroka-posle-kotoroj-nado-vstavit-file2
....
stroka-n

file2 с текстом:

text
file2-stroka-1
....
file2-stroka-n

Хочу получить file3 с текстом:

text
stroka-1
...
stroka-posle-kotoroj-nado-vstavit-file2
file2-stroka-1
....
file2-stroka-n
....
stroka-n

Как это сделать?

Заранее спасибо.
П.С. Не подумайте, что не гуглю :), гуглю, но решение никак найти не могу.

#171400

Это делается с помощью sed. Однако главный специалист по этой утилите сейчас забанен :D , но надеюсь кто-то еще сможет помочь =)

#171401
elve написал:
Это делается с помощью sed

я знаю, что sed обрабатывает данные построчно. Здесь не тот случай. Я сам люблю sed и всегда его использую, но как сделать именно то, что мне надо с помощью sed'а я не в курсе.

elve написал:
главный специалист по этой утилите сейчас забанен

Почему? Что случилось?

#171406

Уже в гугле этот топик на первом месте по моему запросу :)
Тем не менее ответа пока не нашел, если найду, отпишусь в топике.

#171408

Сделал не совсем изящно, но главное, что работает.

[console]sed '/stroka-posle-kotoroj-nado-vstavit-file2/ a\file2-stroka-1\n\....\nfile2-stroka-n' file1 > file3[/console]

Здесь после a\ пришлось вручную вписать строки файла file2 (с разделителем \n), хорошо, что он небольшой. Если он большой, я даже не знаю как такое возможно сделать.

#337119

Получилось следующим образом:

text
sed -i -e "/stroka-posle-kotoroj-nado-vstavit-file2/r/"/абсолютный_путь_к_file2"" file1
#337277

И без sed можно, средствами shell.

Пётр.

Войдите или зарегистрируйтесь, чтобы ответить.