对于给定的字符串:
a="This is test.txt file"
如何在shell环境中找到.
的位置?它应该返回13
。
答案 0 :(得分:4)
使用BASH:
a="This is test.txt file"
s="${a%%.*}" # remove all text after DOT and store in variable s
echo "$(( ${#s} + 1 ))" # get string length of $s + 1
13
或使用awk
:
awk -F. '{print length($1)+1}' <<< "$a"
13
答案 1 :(得分:1)
使用C:
#include <stdio.h>
#include <string.h>
int main() {
char a[] = "This is test.txt file";
int i = 0;
while( i < strlen(a) ) {
if( a[i] == '.' ) {
printf("%d", i + 1);
break;
}
i++;
}
return 0;
}
答案 2 :(得分:1)
很显然,这是一个重复的问题,但是所有答案都不在两个页面上。
其他有用的信息可以在Position of a string within a string using Linux shell script?
上找到此脚本将查找单个字符或多个字符的字符串。 我已经修改了另一页上的代码以适合这里的问题:
#strindex.sh
A="This is test.txt file"
B=.
strindex() {
X="${1%%$2*}"
[[ "$X" = "$1" ]] && echo -1 || echo "$[ ${#X} + 1 ]"
}
strindex "$A" "$B"
#end
这将按要求返回13。
在上面的示例中,我希望使用A =“ $(cat $ 1)”和B =“ $ 2”定义变量'A'和'B',以便可以在任何文件和任何搜索字符串上使用脚本从命令行。 注意,我还将另一页示例中的变量更改为大写。这不是强制性的,但有些人认为大写变量是一种很好的约定,并且更易于阅读和识别。