В то время как теговый удар самое простое к read
это в массив:
bash-4.1$ read -a l < file
Затем можно выполнить итерации по значениям как это:
bash-4.1$ for n in "${l[@]}"; do echo "$n / 1024 ≈ $((n/1024)) = $(bc -l<<<"$n/1024")"; done
4096 / 1024 ≈ 4 = 4.00000000000000000000
1230 / 1024 ≈ 1 = 1.20117187500000000000
4560 / 1024 ≈ 4 = 4.45312500000000000000
1024 / 1024 ≈ 1 = 1.00000000000000000000
Вы должны очистить эти убежища, когда вы их читаете - делайте то, что делает терминал и перезаписать их.
Это эмулирует выход, который вы описываете W / SEQ
:
seq -s "
$(printf '\033[A')" 10
, если он пишет в терминал, который интерпретирует, что уходит, он будет отображаться только 10
. Но по мере того, как вы относитесь к вопросу, это действительно печатает все эти цифры друг над другом. Однако, если я отфильтрую свой вывод с SED
, как:
seq -s "
$(printf '\033[A')" 10 |
sed -e :n -e "\$!N;s/.*$(printf '\033\[A')//;tn"
... действительно делает только печатаю 10
, потому что SED
постоянно Читает в каждой следующей строке ввода и ///
ubstitute, все от головы шаблонного пространства до последнего возникновения клавиши вверх . И каждый раз, когда он так успешно, он ведет в себя ветви обратно в : n
, чтобы снова t
ry.