我正在尝试循环多种语言并在字符串中进行替换。 我不确定这是否是正确的方法或者我的错误是什么。
这是我的代码
langkeys=${LANG_KEYS}
for key in ${langkeys}
do
sed -n "s/test.${key}/www.test.${key}.newdomain/g ;p" test.txt > /new-2.txt
done
RC 文件
LANG_KEYS="de
at
pl
"
我的问题是,只有 pl 语言被替换。
编辑:
我如何导出域名?
这是我在 RC 文件中的想法:
DOMAIN="test"
DOMAIN_SUFFIXE="test.net"
sed -f <(printf 's/${DOMAIN}\.%s/www.${DOMAIN}.&.${DOMAIN_SUFFIX}/g\n' ${LANG_KEYS}) test.txt > /new-2.txt
最佳答案
您可以使用这个sed
并避免任何循环:
sed -f <(printf 's/test\.%s/www.&.newdomain/g\n' $LANG_KEYS) test.txt > /new-2.txt
或者,如果您只想获取匹配的行:
sed -nf <(printf 's/test\.%s/www.&.newdomain/gp\n' $LANG_KEYS) test.txt > /new-2.txt
修复您尝试编辑的脚本:
LANG_KEYS="de
at
pl
"
DOMAIN="test"
DOMAIN_SUFFIX="net"
sed -f <(printf "s/$DOMAIN\.%s/www.&.$DOMAIN_SUFFIX/g\n" $LANG_KEYS) test.txt > /new-2.txt
关于bash - sed - 循环仅替换出现中的最后一种语言 - 它应该替换所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65950754/