猿问

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

假如我有字符串A,
A="米饭+爆炒牛肉+豉汁肉片+蒜蓉芥蓝"
我想过滤它是否含有某个中文字符,比如“牛肉",使用
test.sh
#!/bin/bash
set-x
A="米饭+爆炒牛肉+豉汁肉片+蒜蓉芥蓝"
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
是不是应该在哪个环境变量设置一下。
jeck猫
浏览 1094回答 2
2回答

犯罪嫌疑人X

exportLANG=zh_CN.UTF-8A="米饭+爆炒牛肉+豉汁肉片+蒜蓉芥蓝"B="牛肉"F="毛线"echo$A|grep"$B"&>/dev/nullif[[$?==0]];thenecho$BMatchfiecho$A|grep"$F"&>/dev/nullif[[$?==0]];thenecho$FMatchfi你看看咯另外,确实使用bash的匹配更方便if[["$A"=~"$B"]];thenechoMatch${BASH_REMATCH[0]}fi有时候胜过sed的分组捕获,bash的匹配用起来更简单,也支持分组捕获,结果保存在BASH_REMATCH数组中
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答