Примените символы ESC в перенаправленном выводе

В то время как теговый самое простое к 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

3
10.03.2015, 05:04
1 ответ

Вы должны очистить эти убежища, когда вы их читаете - делайте то, что делает терминал и перезаписать их.

Это эмулирует выход, который вы описываете 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.

1
27.01.2020, 21:31

Теги

Похожие вопросы