我有一个脚本,它从命令行输入一个大的17位数字作为输入。我想将它分成5个不同的数字,每个数字都有不同的数字。的数字。像这样:
Input: 23063080434560228
Output of the program:
Number1: 23063
Number2: 08
Number3: 04
Number4: 3456
Number5: 0228
现在程序的输出(以每个数字的数字表示)是固定的,即Number2
总是有2位数,依此类推。鉴于这种输出方案,我不确定分区是否是一种选择。我可以使用一些bash
命令/实用程序吗?我在网上看过它并没有多见。
谢谢,
斯利拉姆。
答案 0 :(得分:8)
您可以使用Substring Extraction:
${string:position:length}
从length
开始,从string
提取子字符串的position
个字符。
例如:
INPUT=23063080434560228
num1=${INPUT:0:5}
num2=${INPUT:5:2}
num3=${INPUT:7:2}
num4=${INPUT:9:4}
num5=${INPUT:13:4}
答案 1 :(得分:1)
您可以在Bash 3.2或更高版本中一次性将其直接放入数组中。
string=23063080434560228
pattern='(.{5})(.{2})(.{2})(.{4})(.{4})'
[[ $string =~ $pattern ]] && substrings=(${BASH_REMATCH[@]:1})
for substring in "${substrings[@]}"; do echo "$substring"; done