如何在KSH bash脚本中拆分字符串?

时间:2014-11-11 16:30:57

标签: ksh

这是a link

我提到了这个,但我无法理解,我怎么能分开: 测试123进入测试和123

temp=${str%%:*} #only if there was colon in between but in my case there isn't.

如果有空格,我就可以使用它。

更新:我想分割字母和数字。

字符数为5,TESTI,然后数字为4.

所以如果是TESTI123。

我希望它是var1 = testi,var2 = 123

var1=$(echo $STP | cut '[A-Z]' -f1)
var2=$(echo $STP | cut '[0-9]' -f1)

即使这不起作用, cut:[A-Z]:没有这样的文件或目录 cut:[0-9]:没有这样的文件或目录

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用sed

echo testi1234 | sed 's/[0-9]*//g'
echo testi1234 | sed 's/[a-z]*//g'

更复杂,在它们之间留出空间,

echo testi1234 | sed 's/\([A-Za-z]*\)\([0-9]*\)/\1 \2/'  

编辑:OP给出的示例不需要sed。替代品。

在这种情况下,sed是复杂的,你可以只使用tr:

echo testi1234 | tr -d "[a-zA-Z]"
echo testi1234 | tr -d "[0-9]"

如果要使用内部shell语法,还可以使用

full=testi12345
start=${full%%[0-9]*}; echo ${start}
endstr=${full##*[[:lower:]]}; echo ${endstr} 

内部评估工作很快,但很难理解。

答案 1 :(得分:0)

以下问题的答案是:     echo" testi1234" | awk' BEGIN {FIELDWIDTHS =" 5 4"} {print $ 1 RS $ 2}'

现在只需将$ 1和$ 2存储在不同的变量中,应该很好。如果有其他人有更好的答案请评论,我愿意学习新概念。