获取korn shell中字符串的子字符串

时间:2015-09-25 04:01:16

标签: unix ksh

我必须使用ksh88提取子字符串。 (BTW找到ksh $KSH_VERSION版本的简单方法对我不起作用。我不得不使用

 [ "`echo "\c" | grep c`" ] && echo ksh93 || echo ksh88

我尝试使用命令echo ${stringvariable : 2: 2}但它说bad substitution。我是Unix世界的新手。这就是我做的结果:

我使用PUTTY登录Unix并输入上述命令。我也尝试过第一个ksh命令,然后是我的命令,但仍然没有成功。我有什么问题吗?

另外如果我想要从第2位开始直到结束的子串怎么做?

2 个答案:

答案 0 :(得分:3)

空白在shell中很重要。你应该使用

$ stringvariable="foobar"
$ echo ${stringvariable:2:2}
ob

注意:这适用于 ksh93 ,不适用于 ksh88

如果您的单词以空格分隔,则可以使用set

$ stringvariable="foo bar baz zap"
$ set -- $stringvariable
$ echo $3
baz

这应该始终优先于cut的无用叉。使用cut获取字符串中的字符就相当于使用40吨卡车购买和运输一块方糖。

答案 1 :(得分:2)

我找到了另一个对我有用的解决方案。无法找到为什么问题本身的解决方案无效。

这对我有用:

str1="get word from this-text"

得到第二个字。 -d是分隔符(此处为空格)

str2=`echo $str1 | cut -d" " -f 2`

echo $str2
word

从第5个

开始获得3个字符
str2=`echo $str1 | cut -b 5-3`
echo $str2
wor