使用Linux shell脚本在字符串中的字符串位置?

时间:2011-02-17 16:36:28

标签: linux shell

如果我在shell变量中有文本,请说$a

a="The cat sat on the mat"

如何使用Linux shell脚本搜索“cat”并返回4,如果找不到则返回-1?

4 个答案:

答案 0 :(得分:60)

使用bash

a="The cat sat on the mat"
b=cat
strindex() { 
  x="${1%%$2*}"
  [[ "$x" = "$1" ]] && echo -1 || echo "${#x}"
}
strindex "$a" "$b"   # prints 4
strindex "$a" foo    # prints -1

答案 1 :(得分:25)

您可以使用grep来获取字符串匹配部分的字节偏移量:

echo $str | grep -b -o str

根据你的例子:

[user@host ~]$ echo "The cat sat on the mat" | grep -b -o cat
4:cat
如果你只想要第一部分

,你可以把它传递给awk
echo $str | grep -b -o str | awk 'BEGIN {FS=":"}{print $1}'

答案 2 :(得分:6)

我将awk用于此

a="The cat sat on the mat"
test="cat"
awk -v a="$a" -v b="$test" 'BEGIN{print index(a,b)}'

答案 3 :(得分:5)

echo $a | grep -bo cat | sed 's/:.*$//'