在 korn shell 中获取字符串的子字符串
Get substring of a string in korn shell
我必须使用 ksh88 提取子字符串。 (顺便说一句,查找 ksh $KSH_VERSION
版本的简单方法对我不起作用。我不得不使用
[ "`echo "\c" | grep c`" ] && echo ksh93 || echo ksh88
我尝试使用命令 echo ${stringvariable : 2: 2}
但它显示 bad substitution
。我是 Unix 世界的新手。这就是我为得到结果所做的:
我已经使用 PUTTY 登录到 Unix 并输入了上面的命令。我还尝试了第一个 ksh 命令,然后是我的命令,但仍然没有成功。我做错了什么吗?
此外,如果我希望子字符串从位置 2 开始直到结尾,该怎么做?
我找到了另一个对我有用的解决方案。找不到问题本身的解决方案为什么不起作用。
以下是对我有用的方法:
str1="get word from this-text"
得到第二个词。 -d 是分隔符(这里是space)
str2=`echo $str1 | cut -d" " -f 2`
echo $str2
word
从第 5 个开始获得 3 个字符
str2=`echo $str1 | cut -b 5-3`
echo $str2
wor
白space显着shell。你应该使用
$ stringvariable="foobar"
$ echo ${stringvariable:2:2}
ob
注意:这适用于 ksh93,不适用于 ksh88。
如果你的单词是space分隔的,你可以使用set
:
$ stringvariable="foo bar baz zap"
$ set -- $stringvariable
$ echo
baz
这应该总是优于cut
的无用分支。使用 cut
获取字符串中的字符相当于使用 40 吨卡车购买和运输一块方糖的编程。
我必须使用 ksh88 提取子字符串。 (顺便说一句,查找 ksh $KSH_VERSION
版本的简单方法对我不起作用。我不得不使用
[ "`echo "\c" | grep c`" ] && echo ksh93 || echo ksh88
我尝试使用命令 echo ${stringvariable : 2: 2}
但它显示 bad substitution
。我是 Unix 世界的新手。这就是我为得到结果所做的:
我已经使用 PUTTY 登录到 Unix 并输入了上面的命令。我还尝试了第一个 ksh 命令,然后是我的命令,但仍然没有成功。我做错了什么吗?
此外,如果我希望子字符串从位置 2 开始直到结尾,该怎么做?
我找到了另一个对我有用的解决方案。找不到问题本身的解决方案为什么不起作用。
以下是对我有用的方法:
str1="get word from this-text"
得到第二个词。 -d 是分隔符(这里是space)
str2=`echo $str1 | cut -d" " -f 2`
echo $str2
word
从第 5 个开始获得 3 个字符
str2=`echo $str1 | cut -b 5-3`
echo $str2
wor
白space显着shell。你应该使用
$ stringvariable="foobar"
$ echo ${stringvariable:2:2}
ob
注意:这适用于 ksh93,不适用于 ksh88。
如果你的单词是space分隔的,你可以使用set
:
$ stringvariable="foo bar baz zap"
$ set -- $stringvariable
$ echo
baz
这应该总是优于cut
的无用分支。使用 cut
获取字符串中的字符相当于使用 40 吨卡车购买和运输一块方糖的编程。