用文件名替换文本中的标记

时间:2011-12-22 14:51:32

标签: sed grep

我有一堆包含令牌-filename-的文本文件。我需要用文件的真实路径和文件名替换它。

这就是我到目前为止所拥有的:

  

grep -lr -e'-filename-'* .txt | xargs sed -i   的/ -filename- / therealname / G'

有没有办法用文件名替换 therealname

3 个答案:

答案 0 :(得分:5)

再做一点bash-fu

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

当然,换行只是为了清晰起见。随意将其塞进一行。

答案 1 :(得分:2)

for f in $(grep...) ; do sed -i "s,-filename-,$f,g" $f ; done
你的意思是?

使用xargs就可以这样了。

grep ... | xargs -I% -n 1 sed -i "s,-filename-,%,g" %

答案 2 :(得分:0)

for f in YOUR_FILE_LIST_MASK ; do
    sed -i "s:-filename-:${f}" ${f}
done

可以做到。