sed执行替换操作,单独执行不存在问题,但是脚本中执行报上述信息:
###手工执行#############
[root@k8s-t01 tmp]# a=88888888
[root@k8s-t01 tmp]# b=ffffffff
[root@k8s-t01 tmp]# sed -i "s/${a}/${b}/g" q1.txt
[root@k8s-t01 tmp]# more q1.txt
xxxxx||yyyyyy||zzzzzz|11111||22222||333||ffffffff||0000000
xxxxx||yyyyyy||zzzzzz|11111||22222||333||ffffffff||0000000
xxxxx||yyyyyy||zzzzzz|11111||22222||333||ffffffff||0000000
xxxxx||yyyyyy||zzzzzz|11111||22222||333||ffffffff||0000000
xxxxx||yyyyyy||zzzzzz|11111||22222||333||ggggggg||0000000
######脚本执行###########
[root@k8s-t01 tmp]# cat q1.txt |while read line
> do
> a=`echo $line|awk -F "|" '{print $12}'`
> echo $a
> b=`grep $a p1.txt |awk '{print $2}'`
> echo $b
> sed -i "s/${a}/${b}/g" q1.txt
> done
88888888
fffffff
88888888
fffffff
88888888
fffffff
88888888
fffffff
ggggggg
ggggggg
sed: -e expression #1, char 0: no previous regular expression
[root@k8s-t01 tmp]# more q1.txt
xxxxx||yyyyyy||zzzzzz|11111||22222||333||fffffff||0000000
xxxxx||yyyyyy||zzzzzz|11111||22222||333||fffffff||0000000
xxxxx||yyyyyy||zzzzzz|11111||22222||333||fffffff||0000000
xxxxx||yyyyyy||zzzzzz|11111||22222||333||fffffff||0000000
xxxxx||yyyyyy||zzzzzz|11111||22222||333||ggggggg||0000000
[root@k8s-t01 tmp]#
看结果也是执行成功了!!!