这是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]:没有这样的文件或目录
任何帮助都将不胜感激。
答案 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存储在不同的变量中,应该很好。如果有其他人有更好的答案请评论,我愿意学习新概念。