12345678 = 123 45 67 8 在bash中

发布于 2024-10-17 08:04:27 字数 387 浏览 2 评论 0原文

我有一个脚本,它接受一个 17 位大数字作为来自命令行的输入。我想把它分成5个不同的数字,每个数字都有不同的编号。的数字。就像这样:

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

现在程序的输出(以每个数字的位数表示)是固定的,即 Number2 将始终有 2 位数字,依此类推。鉴于这种输出方案,我不确定除法是否是一种选择。是否有一些我可以使用的 bash 命令/实用程序?我在网上查了一下,并没有发现太多。

谢谢,
斯里拉姆。

I have a script that takes in one big 17 digit number as input from the command line. I want to separate it into 5 different numbers, each with different no. of digits. Like so:

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

Now the output of the program (in terms of digits per number) is fixed, i.e, Number2 will always have 2 digits and so on. Given this sort of a scheme of the output, I am not sure if division is even an option. Is there some bash command/utility that I can use? I have looked it over the net and not come across much.

Thanks,
Sriram.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千年*琉璃梦 2024-10-24 08:04:28

您可以使用子字符串提取

${string:position: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}

You can use Substring Extraction:

${string:position:length}

Extracts length characters of substring from string starting at position.

For example:

INPUT=23063080434560228
num1=${INPUT:0:5}
num2=${INPUT:5:2}
num3=${INPUT:7:2}
num4=${INPUT:9:4}
num5=${INPUT:13:4}
迷途知返 2024-10-24 08:04:28

在 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

You can put this directly into an array in one shot in Bash 3.2 or greater.

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

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

for substring in "${substrings[@]}"; do echo "$substring"; done
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文