我有一个看起来像这样的文件
I/am/a/string
I'm/still/a/string
Always/a/string
我正在尝试使用sed将“ string”的首次出现替换为包含“ /”之类的变量
x=ive/been/replaced
所以sed的输出将是
I/am/a/ive/been/replaced
因为我只希望第一次出现,而我使用的变量通常是您使用的
sed -i "0,/string/s//$x/" file
但是在这种情况下,因为变量具有“ /”,所以我必须使用其他分隔符,例如
sed "0,|string|s||$x|" file
但这不起作用。
我想念什么?
注意:
我想在sed中完成此操作
答案 0 :(得分:1)
如果使用awk
没问题:您可以在第一次更换后打印并退出。
awk -v x="${x}" '{gsub(/string/,x);print ;exit}' file
I/am/a/ive/been/replaced
sed
版本:第一次匹配后将退出,请注意,搜索字符串“ string”仍位于/ /
内,而替换部分使用不同的分隔符。
sed -n "0,/string/ s|string|$x|p"
I/am/a/ive/been/replaced