当前位置: 技术问答>linux和unix
用sed搜索字符串的,出现的问题,求解决!
来源: 互联网 发布时间:2017-02-07
本文导语: #将配置文件中的安装包类型合并到安装包列表中 for instpkg in $addtargets do in_products=`eval echo $targets | eval sed -n '/$instpkg/p' | wc -l` if [ "$in_products" -eq 0 ]; then ta...
#将配置文件中的安装包类型合并到安装包列表中
for instpkg in $addtargets
do
in_products=`eval echo $targets | eval sed -n '/$instpkg/p' | wc -l`
if [ "$in_products" -eq 0 ]; then
targets+="'"$instpkg"' "
fi
done
这段脚本是一个合并安装包类型的工作,如果sed -n '/$instpkg/p' 搜索到targets里匹配的字符串,就会打印,这样,说明targets里面已经有这个类型,所以不追加入。
问题是:这种匹配貌似只是模糊匹配,不能有效区分相似的字符串,比如,S5520,S5520-ARM,S5520-PPC,如果tagers里面已经有S5520-ARM,S5520-PPC,那么S5520就会匹配到存在,就不会追加,但是这是一个新类型的话就不能追加了。
求解决!!!
(我个人认为他是只匹配第一个字符开始的字串,而不是精确匹配,不检查字符串长度)
for instpkg in $addtargets
do
in_products=`eval echo $targets | eval sed -n '/$instpkg/p' | wc -l`
if [ "$in_products" -eq 0 ]; then
targets+="'"$instpkg"' "
fi
done
这段脚本是一个合并安装包类型的工作,如果sed -n '/$instpkg/p' 搜索到targets里匹配的字符串,就会打印,这样,说明targets里面已经有这个类型,所以不追加入。
问题是:这种匹配貌似只是模糊匹配,不能有效区分相似的字符串,比如,S5520,S5520-ARM,S5520-PPC,如果tagers里面已经有S5520-ARM,S5520-PPC,那么S5520就会匹配到存在,就不会追加,但是这是一个新类型的话就不能追加了。
求解决!!!
(我个人认为他是只匹配第一个字符开始的字串,而不是精确匹配,不检查字符串长度)
|
sed -n "/^$instpkg$/p"
这样行不行.
这样行不行.