为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Linux shell下做中文字符串的匹配

如何在Linux shell下做中文字符串的匹配

jeck猫 2019-03-29 22:08:21
假如我有字符串A,A="米饭+爆炒牛肉+豉汁肉片+蒜蓉芥蓝"我想过滤它是否含有某个中文字符,比如“牛肉",使用test.sh#!/bin/bashset-xA="米饭+爆炒牛肉+豉汁肉片+蒜蓉芥蓝"F="牛肉"if[`echo"$A"|egrep"$F"`];thenecho"Ainclude$F";fi出现以下错误:$./test.sh+A='米饭+爆炒牛肉+豉汁肉片+蒜蓉芥蓝'+F=$'\347\211\233\350\202\211'++egrep$'\347\211\233\350\202\211'++echo'米饭+爆炒牛肉+豉汁肉片+蒜蓉芥蓝'+'['$'\347\261\263\351\245\255'+$'\347\210\206\347\202\222\347\211\233\350\202\211'+$'\350\261\211\346\261\201\350\202\211\347\211\207'+$'\350\222\234\350\223\211\350\212\245\350\223\235'']'./test.sh:line7:[:toomanyarguments是不是应该在哪个环境变量设置一下。
查看完整描述

2 回答

?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

exportLANG=zh_CN.UTF-8
A="米饭+爆炒牛肉+豉汁肉片+蒜蓉芥蓝"
B="牛肉"
F="毛线"
echo$A|grep"$B"&>/dev/null
if[[$?==0]];then
echo$BMatch
fi
echo$A|grep"$F"&>/dev/null
if[[$?==0]];then
echo$FMatch
fi
你看看咯
另外,确实使用bash的匹配更方便
if[["$A"=~"$B"]];then
echoMatch${BASH_REMATCH[0]}
fi
有时候胜过sed的分组捕获,bash的匹配用起来更简单,也支持分组捕获,结果保存在BASH_REMATCH数组中
                            
查看完整回答
反对 回复 2019-03-29
  • 2 回答
  • 0 关注
  • 1093 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号