Как добавить содержимое файла в другой файл, начиная с маркера? - PullRequest
2 голосов
/ 06 апреля 2011

Например, file1 содержит:

Line 1
This is another line a
and another
<BEGIN>

few more lines.

file2 содержит:

/* This is a line With Special Characters */
/* Another line with @ special stuff \ ? # ! ~ */
/* and another */

Я хотел бы вставить file2 в file1 в точке после оператора .

Я попробовал следующую команду sed, но, похоже, она обрабатывает '/' и '*' как специальные символы.

TOINSERT=`cat file2`
sed "/BEGIN/ a $TOINSERT" file1 > output_file

Однако я получил ошибку, потому что $ TOINSERTсодержит специальные символы.Есть ли способ избежать всего содержимого $ TOINSERT?

1 Ответ

3 голосов
/ 06 апреля 2011
#!/bin/bash
sed '/<BEGIN>/ {
    r file2
    d
}' < file1 > output_file

Примечание: Если вы хотите сохранить строку с <BEGIN>, просто используйте:

 sed '/<BEGIN>/r file2' < file1 > output_file

Подтверждение концепции

$ ./insertf.sh
Line 1
This is another line a
and another
/* This is a line With Special Characters */
/* Another line with @ special stuff \ ? # ! ~ */
/* and another */

few more lines.
...