我想在文件中搜索字符并替换为包含内容的文件:ktr_updater
使用 Unix 命令在文件中搜索并替换为另一个文件中的文件内容。
sed -i 's/ktr_updater/'"$ktrupdate"'/g' samplejob.kjb
答案1
perl -pi -e 'BEGIN{local $/; $r = <STDIN>} s/ktr_updater/$r/g
' file < other-file
将编辑file
i
n-place 和s
ubstitude 每一次(g
全局)出现ktr_updater
with $r
,并在ning 时用可以读取的内容$r
进行初始化(由于记录分隔符未设置,通过在 BEGIN 语句中声明它而不带值) ,stdin 已被重定向到.BEGIN
STDIN
local
other-file
使用 GNUsed
或兼容版本,您可以通过将文件内容存储在 shell 变量中来执行相同的操作,将其转换为适合作为sed
s
命令替换的内容并调用sed
:
repl=$(cat other-file; echo .); repl=${repl%.}
escaped_repl=$(printf '%s\n' "$repl" | sed 's:[\/&]:\\&:g;$!s/$/\\/')
sed -i "s/ktr_updater/$escaped_repl/g" file