该博文中描述的如下两个字符串操作,
1 ${string:position} #在$string中, 从位置$position开始提取子串 2 ${string:position:length} #在$string中, 从位置$position开始提取长度为$length的子串
需要用到字符/子串在父字符串中的位置(position);而shell字符串并未提供获取子串所在位置的接口,如果基于字符串变量的操作,则无法预知子串的位置;
Position of a string within a string using Linux shell script?
该文提到了一些解决方案,觉得有价值,转载如下:
If I have the text in a shell variable, say $a
:
a="The cat sat on the mat"
How can I search for "cat" and return 4 using a Linux shell script, or -1 if not found?
1、
With 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
I used awk for this
|