Есть файл в котором 500тыс. строк, строки состоят из двоичного кода. Нужно: если мы встречаем первыми двумя символами «11», то это означает что число отрицательное, далее отнимаем первые 2 символа от строки, а остальные инвертируем, т.е. 1 стал 0 и наоборот, затем переводим получившуюся строку в десятичное число и записываем в файл со знаком «-»; если мы встречаем первыми символами «00», «01» или «10», то это означает что число положительное, соответственно также отнимаем первые 2 символа, переводим в десятичное и записываем в файл. Скрипт работает, но считает очень долго, испробовал множество способов, как сам считаю оптимизировал по максимуму(я в BASH относительно новичок). ПОМОГИТЕ ускорить процесс….
while read Line
do
a=11
if [[ "${Line:0:2}" == "$a" ]]
then
echo "-"$((2#$(echo ${Line:2:14} | sed -e 's/0/w/g; s/1/q/g' | sed -e 's/w/1/g; s/q/0/g')))
else
echo $((2#${Line:2:14}))
fi
done <file.txt