当前位置: 首页 > 编程笔记 >

Shell脚本实现查找字符串中某字符最后出现的位置

司空修贤
2023-03-14
本文向大家介绍Shell脚本实现查找字符串中某字符最后出现的位置,包括了Shell脚本实现查找字符串中某字符最后出现的位置的使用技巧和注意事项,需要的朋友参考一下

需要对字符串查找其中某个字符最后出现的位置,这个在PHP (strrpos)或者Perl (rindex)里面都有现成函数可用的功能,在Shell里面居然一时想不出个道道来。在论坛上发贴也没人解答(不知道是问题太简单还是真的很高深...)。

因为事情紧急等不得,于是求救大学同学。Pacman不愧是个中高手,三两下点醒梦中人:

rindex.sh代码:


#!/bin/bash

strToCheck=$1; charToSearch=$2;

let pos=`echo "$strToCheck" | awk -F ''$charToSearch'' '{printf "%d", length($0)-length($NF)}'`

echo "char $charToSearch lastpos is: $pos"


使用示例:

[zeal]$ sh rindex.sh www.zeali.net .

char . lastpos is: 10

Calfen则提供了一种比较自力更生的方式:自己用c写了个小程序来实现rindex的功能,gcc rindex.c -o rindex 之后shell就拥有可以调用的rindex了 :)
rindex.c代码


#include <strings.h>

int main(int argc, char *argv[]){

    char* wholeWord;

    char subChar;

    char* subWord;

    int ret;

    if(argc!=3){         printf("Use:rindex word char\n");         exit(0);     }     wholeWord=argv[1];     subChar=*argv[2];     subWord=rindex(wholeWord,subChar);

    if(0 == subWord)         ret = 0;     else         ret = (subWord-wholeWord+1);     printf("%d\n",ret); }

 类似资料:
  • 问题内容: 我想在给定的输入string中找到某个子字符串最后一次出现的位置(或索引)。 例如,假设输入字符串为,子字符串为,则应输出3。 我怎样才能做到这一点? 问题答案: 用途: 另外,请勿将其用作变量名,否则将使内置的阴影变暗。

  • 问题内容: 我想计算一个字符串中某个字符的出现次数,假设我有一个字符串“ aaaab”,我如何计算其中的a数量? 问题答案: 如果不使用正则表达式,则代码看起来更易于阅读。 现在在您的字符串中包含数字“ a”。并且,这在最佳时间执行。 正则表达式非常适合模式匹配。但是只需定期循环即可在此处完成工作。

  • 查找字符串中出现最多的字符和个数? 如 sdsdsddssssssdd -> 字符最多的是s,出现9次 思路说明 利用python中的collections模块的Counter,查此函数详细内容.对字符串进行统计。 然后将结果转化为字典类型。 特别注意,在字符串中可能会出现数量并列第一的字符,因此要通过循环找出最大数之后,再通过循环找出最大数对应的字母(键)。 解答1(python) import

  • 问题内容: 我正在尝试查找“ |”的所有出现 在一个字符串中。 但我得到一个错误: 问题答案: 功能: 将返回的索引列表中的出现。

  • 问题内容: 我需要解析一个HTML文档并查找其中所有出现的字符串。 我目前将HTML加载到字符串变量中。我只需要字符位置,这样我就可以遍历列表以在字符串之后返回一些数据。 该函数仅返回第 一个 匹配项。如何 全部 归还呢? 问题答案: 在不使用正则表达式的情况下,类似这样的方法应该可以返回字符串位置:

  • 问题内容: 我有这样的字符串 我想用转义双引号(\“)替换最后一个双引号(”) 字符串的结果是 我怎样才能做到这一点。我知道要替换字符串的第一次出现。但不知道如何替换字符串的最后一次出现 问题答案: String str = “"Position, fix, dial"“; int ind = str.lastIndexOf(“"“); if( ind>=0 ) str = new StringB