在 Bash 中解析字符串,不带分隔符



我有一段脚本,我想弄清楚,所以对于更有经验的人来说,这可能是一个简单的问题。

这是代码:

#!/bin/bash
echo "obase=2;$1" | bc

用于:

$./script 12

输出:

1100

我的问题是,如何将这个 4 位数字解析为单独的数字?(然后用 cut -d ' ' 分隔并将它们输入到数组中......

我希望能够获得以下输出:

1 1 0 0 

这在 BASH 中甚至可能吗? 我知道使用其他语言更容易。

可以使用sed

echo "obase=2;$1" | bc | sed 's/./& /g'

或者,如果您更喜欢较长的形式:

echo "obase=2;$1" | bc | sed 's/(.)/1 /g'

如果您的sed支持-r

echo "obase=2;$1" | bc | sed -r 's/(.)/1 /g'

要打印字符串中的单个数字,您可以使用fold

s=1100
fold -w1 <<< "$s"
1
1
0
0

要创建数组:

arr=( $(fold -w1 <<< "$s") )
set|grep arr
arr=([0]="1" [1]="1" [2]="0" [3]="0")

相关内容

  • 没有找到相关文章

最新更新