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

Sed 用文件名替换文本中的标记,sed,grep,Sed,Grep,我有一堆文本文件,其中包含token-filename-。我需要用文件的实际路径和文件名替换它 这就是我到目前为止的情况: grep-lr-e'-filename-'*.txt | xargs sed-i 's/-filename-/therealname/g' 有没有办法用文件名替换文件名?like for f in $(grep...) ; do sed -i "s,-filename-,$f,g" $f ; done 你是说 使用xargs它将是这样的 grep ... | xargs

我有一堆文本文件,其中包含token-filename-。我需要用文件的实际路径和文件名替换它

这就是我到目前为止的情况:

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

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

like

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

使用
xargs
它将是这样的

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

再打一点就行了

for x in *.txt; do
    sed -i "s/-filename-/$x/g" $x;
done
当然,这些新词只是为了清楚起见。请随意把它塞进一行

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