Разбор строк в Bash без разделителя
У меня есть фрагмент сценария, который я пытаюсь выяснить, так что, возможно, это простой вопрос для кого-то более опытного.
Вот код:
#!/bin/bash
echo "obase=2;$1" | bc
Используется как:
$./script 12
Выходы:
1100
У меня вопрос, как я могу разобрать это 4-значное число в отдельные цифры? (чтобы затем разделить с помощью cut -d ' ' и ввести их в массив...)
Я хотел бы получить следующий вывод:
1 1 0 0
Это возможно даже в BASH? Я знаю это проще с другими языками.
2 ответа
Решение
Можешь использовать 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")