вот такой файл:
                  
                  
                  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, он прекрасно умеет инклудить
ну мож человек тренируется просто
Обсуждают сегодня