Как я могу использовать обратную ссылку вместо имени файла в sed?

Я пытаюсь использовать sed для сканирования через файл и поиска шаблона, затем использовать часть сопоставленного шаблона в качестве имени файла и вставить содержимое файла в этом месте. Я могу заставить большинство из них работать, но я не могу понять, как использовать обратную ссылку вместо имени файла.

Краткая версия заключается в том, что необходимо предварительно обработать латексный файл и избавиться от всех команд верхнего уровня \input Becuaase lilypond-book – это Stupid ™.

 # Setup files for example $ echo "foo\n\\input{file2}\nfoo" > file1 $ echo "bar\nbar" > file2 # Use sed to find and replace latex \input commands $ sed $'/^\\\\input{\\(.*\\)}$/ {r file2\nd}' file1 foo bar bar foo 

До сих пор так хорошо, но у него есть жестко закодированное имя файла, и мне нужно использовать результат группового совпадения выше (часть между разделителями { и } ) в качестве имени файла. К сожалению, это не работает:

 $ sed $'/^\\\\input{\\(.*\\)}$/ {r \\1\nd}' file1 foo foo 

Как я могу использовать сопоставленный шаблон в качестве имени файла в таком сценарии?

One Solution collect form web for “Как я могу использовать обратную ссылку вместо имени файла в sed?”

С помощью GNU sed вы можете сделать что-то вроде:

 sed '/^\\input{\(.*\)}$/{s//\1/;s/'\''/&\\&&/g;s/.*/cat<'"'&'/e}" 

(это построить команду cat<'the-file' (при необходимости избегая кавычек в имени файла) и использовать флаг e команды s (которая является специфичной для GNU) для оценки этой команды).

Interesting Posts

Копировать удаленный btrfs инкрементный снимок на новый диск с UUID

Не удается удалить дубликаты пакетов из-за зависимостей

Выполнять параллельные параллельные параллели

Выберите строки из текстового файла с идентификаторами, указанными в другом файле

В Kali через VirtualBox, как я могу настроить два адаптера ethernet с помощью GUI?

awk repeat {n} не работает

Проблемы с созданием Virtual_IP для PaceMaker + Corosync – CentOS 7

Что это за ошибка SSH в отношении «неправильного идентификатора RSA1» и «неуказанного сбоя GSS»?

Unix bash / ksh: выбор первого непространственного символа из файла из определенной строки

Никакие программы не запускаются после отключения от интернет-сети

Скрипт оболочки Unix, параметры с пробелами

разные результаты от awk и grep

Флаг -X (пересылка X11) не работает в Windows

У вас нет разрешения на запись в разделе

Ключ к букве «p» не работает повсюду, Ubuntu Linux

Linux и Unix - лучшая ОС в мире.