Sed: включая внешний файл, указанный в регулярном выражении - PullRequest
2 голосов
/ 22 сентября 2019

Я хотел бы вставить файл в другой файл, используя sed.Вот пример

У меня есть файл input.txt со строкой:

#INCLUDE filename-to-import

В настоящее время я обрабатываю это с sed для создания output.txt

sed -r -e "/^#INCLUDE (\w+)/r ${HOME}/inc/<filename>.sh" input.txt

Как я могу вернуть ссылку на группу, захваченную в регулярном выражении, чтобы импортировать filename-to-import, который указан?Я пытался использовать \1, но это не сработало, я полагаю, потому что это выходит за рамки регулярных выражений.$1 тоже не сработало.

Возможно ли это с sed?

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Это может работать для вас (GNU sed):

sed -E '/^~INCLUDE (\w+)/{p;s##cat /inc/\1.sh#e}' file

Захватить обратную ссылку, используя команду замены, и в ее RHS, оценить команду оболочки, используя флаг e.

1 голос
/ 22 сентября 2019

Как уже говорилось, я не думаю, что это можно сделать с помощью sed.Вот awk один вкладыш вместо:

awk '$1 == "#INCLUDE" { while(getline line <$2){print line} }' input.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...