вот такой файл:
Some text
include ./includes/file1.txt
include ./includes/file2.txt
нужно заменить строки вида include/[filename].txt на содержимое этого файла.
Начал делать с помощью sed, вот так:
cat ./file.txt | sed -e '/^include \(.\/includes\/[a-zA-Z0-9_]*.txt\)/{ r ./includes/file2.txt d }'
оно работает, но я передаю явный путь к файлу ./includes/file2.txt, а нужно что бы он брал путь из строки.
как добавить туда ссылку вида \1 ? и можно ли вообще это сделать ?
ну можно потрахаться с двумя прохоlами и eval шелловыми, но может проще взять более удобный скриптовый язык? например perl)
вообще звучит как классическая задача для m4
ну или из стаааарой книжки "awk and sed"
...которым на замену и родился перл!
замени одинарные кавычки на двойные и тогда можно внутрь подставлять шелловые переменые типа $variable
я для таких задач тупо использовал C pre-processor, он прекрасно умеет инклудить
ну мож человек тренируется просто
Обсуждают сегодня