LINUX.ORG.RU

замена строки содержимым файла

 


0

1

Привет, ЛОР! Пытаюсь заменить в файле строки вида «@ some_file_name» содержимым файла с именем some_file_name. Делаю так:

/^@ *\([a-zA-Z0-9\.]*\)/{
    r \1
    d
}

Не работает. Если заменить \1 во второй строке названием файла то замена происходит, но мне нужно чтобы имя файла бралось из исходного файла. Как быть?



Последнее исправление: return0 (всего исправлений: 1)

Можно использовать команду e или модификатор e к команде s:

s/^@ *\([a-zA-Z0-9\.]*\)/cat \1/e
anonymous
()
cat $SOURCE_FILE | while read line; do
    if echo $line | grep -q '^@'; then
        cat $(echo $line | sed 's/^@ *//')
    else
        echo $line
    fi
done
schizoid ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.