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]# 

看结果也是执行成功了!!!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐