Замените токен в тексте именем файла - PullRequest
4 голосов
/ 22 декабря 2011

У меня есть набор текстовых файлов, которые содержат токен -filename-.Мне нужно заменить его реальным путем и именем файла.

Вот что у меня есть:

grep -lr -e '-filename-' * .txt|xargs sed -i 's / -filename- / therealname / g'

Есть ли способ заменить therealname на имя файла?

Ответы [ 3 ]

5 голосов
/ 22 декабря 2011

Просто сделай немного больше баш-фу

for x in *.txt; do
    sed -i "s/-filename-/$x/g" $x;
done

Конечно, новые строки просто для ясности. Не стесняйтесь втиснуть это в одну строчку.

2 голосов
/ 22 декабря 2011

как

for f in $(grep...) ; do sed -i "s,-filename-,$f,g" $f ; done

Вы имеете в виду?

С xargs это будет примерно так.

grep ... | xargs -I% -n 1 sed -i "s,-filename-,%,g" %
0 голосов
/ 22 декабря 2011
for f in YOUR_FILE_LIST_MASK ; do
    sed -i "s:-filename-:${f}" ${f}
done

может это сделать.

...