У меня есть набор текстовых файлов, которые содержат токен -filename-.Мне нужно заменить его реальным путем и именем файла.
Вот что у меня есть:
grep -lr -e '-filename-' * .txt|xargs sed -i 's / -filename- / therealname / g'
Есть ли способ заменить therealname на имя файла?
Просто сделай немного больше баш-фу
for x in *.txt; do sed -i "s/-filename-/$x/g" $x; done
Конечно, новые строки просто для ясности. Не стесняйтесь втиснуть это в одну строчку.
как
for f in $(grep...) ; do sed -i "s,-filename-,$f,g" $f ; done
Вы имеете в виду?
С xargs это будет примерно так.
xargs
grep ... | xargs -I% -n 1 sed -i "s,-filename-,%,g" %
for f in YOUR_FILE_LIST_MASK ; do sed -i "s:-filename-:${f}" ${f} done
может это сделать.