該博文中描述的如下兩個字符串操作,
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
|
