在Bash Shell里处理字符串,怎么能判断一个字符串是不是另一个的子字符串?
有木有灰常简单的方法啊~~~
#!/bin/bash strA="dkasnfk" strB="asn" strC="knk" result=$(echo $strA | grep "${strC}") if [[ "$result" != "" ]] then echo "True" else echo "False" fi
简单示例:
#!/bin/sh thisString="1 2 3 4 5" # 源字符串 searchString="1 2" # 搜索字符串 case $thisString in *"$searchString"*) echo Enemy Spot ;; *) echo nope ;; esac
string='My string';
if [[ $string == *My* ]]
then
echo "It's there!";
fi
http://stackoverflow.com/questions/229551/string-contains-in-bash
最简单的是用expr命令:
sorry, index貌似不是我想的那个意思,expr index strings chars,只要chars中的任意一个字符在strings中出现,就返回所在的位置,否则返回0
$ str="hello,world" $ expr match "$str" ".*llo" 5 $ expr match "$str" ".*llt" 0
所以如何判断一个字符串是否包含某个子串:
$ test `expr match "$str" ".*$pat"` -ne 0
当然也是可以用grep命令来判断的:
$ echo “$str” | grep -q ”$pat” $ echo $?
785 阅读
700 阅读
可以换个角度,这样考虑,试图替换原字符串中的模式串内容: