我有一堆包含令牌-filename-的文本文件。我需要用文件的真实路径和文件名替换它。
这就是我到目前为止所拥有的:
grep -lr -e'-filename-'* .txt | xargs sed -i 的/ -filename- / therealname / G'
有没有办法用文件名替换 therealname ?
答案 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
可以做到。