shell中有没有substr函数啊?

如题所述

  awk接支持substr函数

  VFP字符函数的一种。表示的是字符型函数。格式是:SUBSTR(<字符表达式>、<数值表达式1>[,<数值表达式2>]
  语法格式一:
  SUBSTR(cExpression,nStartPosition [,nCharactersReturned])
  其中,cExpression指定要从其中返回字符串的字符表达式或备注字段;nStartPosition用于指定返回的字符串在字符表达式或备注字段中的位置,nCharactersReturned用于指定返回的字符数目,缺省时返回字符表达式的值结束前的全部字符。
  举例
  STORE'abcdefghijklm' To mystring
  ?SUBSTR(mystring ,1,5) 显示 "abcde"
  ?SUBSTR(mystring ,6) 显示 "fghijklm"
  ?SUBSTR(mystring,-2)显示“lm”
  ?SUBSTR(mystrng,-4)显示“jklm”、
  语法格式二:

  SUBSTR(char A,char B,int C, int D)
  这个函数主要用于字符串的运算,参数A是字符数组或是指向字符串的指针,用于接收字符串,参数B一般也为字符数组或指向字符串的指针,表示要截取字符串的地方,参数C表示从B中截取字符串的起始位置,参数D表示要截取字符串的长度,缺省时返回字符表达式的值结束前B的全部字符。
  上述表达式功能可描述为:从字符串B的第C个字符处开始,截取长度为D的一串字符串,放入字符串数组A中,返回截取的字符串。
  举例: ch X S[]="abcdefgh" 调用substr(X,S,4,2)后,得到的结果是:"ef"
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-16
shell中有如下几种方法可以实现substr的功能。
方法一:
expr <string_variable> start_pos length
方法二:
echo ${<string_variable>:start_pos[:length]}
方法三:
awk中直接支持 substr 。
echo "" | awk '{substr('<string_variable>',start_pos,length)}'

例如:
str="abcd"
方法一:
$ expr $str 2 3
bcd
方法二:
$ echo ${x:2}
bcd
$ echo ${x:2:3}
bcd
方法三:
$ echo "" | awk '{substr('$x',2,3)}'
bcd追问

方法1和2貌似不行哦 方法3 我试过了是可行的
$ str="abcd";echo $str|awk '{print substr($0,2,3)}'
bcd

本回答被提问者采纳