在没有分隔符的情况下解析Bash中的字符串

时间:2014-02-21 08:03:25

标签: bash parsing bc

我有一个我想弄清楚的剧本,所以对于那些经验丰富的人来说,这可能是一个简单的问题。

以下是代码:

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

用过:

$./script 12

输出:

1100

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

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

1 1 0 0 

这在BASH中是否可行?我知道用其他语言更容易。

2 个答案:

答案 0 :(得分:1)

可以使用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'

答案 1 :(得分:1)

要从字符串中打印个别数字,您可以使用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")