Bash - 从一个var中拆分文本和数字/数字

时间:2014-05-26 18:54:30

标签: bash variables text split

我有一个问题。 我有VAR - 例如:

  

$ VAR ="&TEST12#34;

我想把它分成两部分。 但我不知道该怎么做。 我试过了:

  

SECOND_PART =" $ {VAR:-1}"

     

FIRST_PART =" $ {VAR%?}"

但此方法不包括多位数字(范围:1到99)。 在此先感谢您的帮助:)

2 个答案:

答案 0 :(得分:3)

echo  ${VAR//[^0-9]/}  ${VAR//[0-9]/}

这使用模式替换。它还假设输入的形式是可靠的(例如,不是"this12andthat98"

答案 1 :(得分:1)

这是另一种方法:

echo  ${VAR%%[0-9]*}  ${VAR##*[!0-9]}
test 12
  • ${VAR%%[0-9]*}
    从后面删除最长的数字匹配。所以 test12将成为test

  • ${VAR##*[!0-9]}
    从前面移除最长的比赛。所以test12 将成为12。匹配状态匹配除数字之外的任何内容。