2011-02-15 25 views
1

我有一个脚本,它接受来自命令行的一个大的17位数字作为输入。我想将它分成5个不同的数字,每个数字都有不同的号码。数字。像这样:12345678 = 123 45 67 8在bash中

Input: 23063080434560228 
Output of the program: 
Number1: 23063 
Number2: 08 
Number3: 04 
Number4: 3456 
Number5: 0228 

现在程序的输出(以每数位计算)是固定的,即,Number2总会有2位等。鉴于这种输出方案,我不确定分区是否是一种选择。我可以使用一些bash命令/实用程序吗?我已经在网上看过它,并没有遇到太多。

谢谢,
Sriram。

回答

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} 
+0

完美!谢谢! – Sriram 2011-02-15 08:34:08

1

可以在击3.2或更大的直接把这种成阵列中的一个镜头。

string=23063080434560228 
pattern='(.{5})(.{2})(.{2})(.{4})(.{4})' 

[[ $string =~ $pattern ]] && substrings=(${BASH_REMATCH[@]:1}) 

for substring in "${substrings[@]}"; do echo "$substring"; done 
+0

那真是太棒了!漂亮的花式! – Sriram 2011-02-15 12:13:07

相关问题