在Linux中,如果你想获取字符串中某个字符或子字符串的位置,可以使用expr index
命令或者grep
命令,但更常用且功能更强大的是使用awk
或perl
这样的文本处理工具。
expr index
expr index
命令可以用来查找一个字符串中另一个字符串首次出现的位置,但它返回的是从1开始的位置,并且只返回第一个匹配项的索引。
string="hello world"
position=$(expr index "$string" "world")
echo $position # 输出: 7
awk
awk
是一个强大的文本处理工具,可以用来查找字符串中字符或子字符串的位置。
string="hello world"
position=$(echo "$string" | awk '{print index($0,"world")}')
echo $position # 输出: 7
如果你想查找的是单个字符的位置,可以稍微修改一下:
string="hello world"
char="o"
position=$(echo "$string" | awk -v char="$char" '{for(i=1;i<=length($0);i++) if(substr($0,i,1)==char) {print i; exit}}')
echo $position # 输出: 5(第一个'o'的位置)
perl
perl
也是一个强大的文本处理工具,可以用来查找字符串中字符或子字符串的位置。
string="hello world"
position=$(echo "$string" | perl -ne 'print index($_,"world")+1, "\n"')
echo $position # 输出: 7
对于单个字符的位置查找:
string="hello world"
char="o"
position=$(echo "$string" | perl -ne 'print index($_,"'.$char.'")+1, "\n" while /'.$char.'/g')
echo $position # 输出: 5 8(所有'o'的位置)
expr index
、awk
和perl
返回的位置都是从1开始计数的,而不是从0开始。awk
和perl
时,可以通过正则表达式来查找多个匹配项的位置。以上就是在Linux中查找字符串中字符或子字符串位置的一些常用方法。根据具体需求选择合适的工具和方法可以更高效地完成任务。
领取专属 10元无门槛券
手把手带您无忧上云