2011-02-15 58 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

相關問題