Как отформатировать вывод скрипта равным количеством пробелов

Удалите старую версию & amp; Перейдите на официальный сайт TeamViewer & amp; загрузите пакет Debian версии Teamviewer, которую вы хотите установить.

Затем откройте терминал в каталоге, в котором загружен ваш пакет.

sudo dpkg -i package_name

имя_пакета - это имя пакет

Для установки отсутствующих зависимостей

sudo apt-get -f install
6
задан 8 June 2017 в 17:15

2 ответа

Основная причина в том, что ваша команда echo принимает x количество символов из переменной и прокладки 14 пробелов. Это означает, что общее количество символов в выходной строке не будет согласованным.

Вместо этого вы можете использовать printf с спецификатором ширины %-10s для левого дополнения следующим образом:

bash-4.3$ for i in "${a[@]}"; do printf "%-10s%-4s|\n" "${i:0:10}" " "; done 1.wav | 2.wav | 3.wav | input.txt |

Таким образом, любая переменная, которую вы имеете, в пределах 10 символов и для тех 10 символов, которые мы вводим 4. Знак - делает каждую строку левым оправданным.

Число -10 в %-10s должно оставаться неизменным, чтобы гарантировать, что даже если файл короче 10 символов, мы все равно получаем 10-значную строку с пробелами. Но %-4s часть может быть изменена. Например, в приведенном выше примере %-4s будет иметь 4 пробела, но если мы хотим иметь 14 пробелов, используйте %-14s.

Обратите внимание, что это обычно рекомендуется против разбора вывода ls, что именно вы делаете. В качестве альтернативы мы можем использовать команду find с структурой while IFS= read -r -d '' следующим образом:

bash-4.3$ find -maxdepth 1 -type f -print0 | while IFS= read -r -d '' file; > do > printf "%-10s%-4s|\n" "${file:0:10}" " " > done ./3.wav | ./1.wav | ./2.wav | ./.swp | ./input.tx |

Обратите внимание, что find является рекурсивным, поэтому он также работает и с подкаталогами. Если вы хотите этого избежать, используйте опцию -maxdepth 1.

9
ответ дан 18 July 2018 в 11:58

Основная причина в том, что ваша команда echo принимает x количество символов из переменной и прокладки 14 пробелов. Это означает, что общее количество символов в выходной строке не будет согласованным.

Вместо этого вы можете использовать printf с спецификатором ширины %-10s для левого дополнения следующим образом:

bash-4.3$ for i in "${a[@]}"; do printf "%-10s%-4s|\n" "${i:0:10}" " "; done 1.wav | 2.wav | 3.wav | input.txt |

Таким образом, любая переменная, которую вы имеете, в пределах 10 символов и для тех 10 символов, которые мы вводим 4. Знак - делает каждую строку левым оправданным.

Число -10 в %-10s должно оставаться неизменным, чтобы гарантировать, что даже если файл короче 10 символов, мы все равно получаем 10-значную строку с пробелами. Но %-4s часть может быть изменена. Например, в приведенном выше примере %-4s будет иметь 4 пробела, но если мы хотим иметь 14 пробелов, используйте %-14s.

Обратите внимание, что это обычно рекомендуется против разбора вывода ls, что именно вы делаете. В качестве альтернативы мы можем использовать команду find с структурой while IFS= read -r -d '' следующим образом:

bash-4.3$ find -maxdepth 1 -type f -print0 | while IFS= read -r -d '' file; > do > printf "%-10s%-4s|\n" "${file:0:10}" " " > done ./3.wav | ./1.wav | ./2.wav | ./.swp | ./input.tx |

Обратите внимание, что find является рекурсивным, поэтому он также работает и с подкаталогами. Если вы хотите этого избежать, используйте опцию -maxdepth 1.

9
ответ дан 24 July 2018 в 19:53
  • 1
    Я запустил его, но ... Я хочу напечатать ./3.wav | ./1.wav | ./2.wav | Я не хочу включать ./randomfi. – SeHoon 8 June 2017 в 17:32
  • 2
    Хорошо, я исправлю это через минуту. Оставайтесь на линии – Sergiy Kolodyazhnyy 8 June 2017 в 17:37
  • 3
    Вы не можете использовать \ n в комментарии. – Sergiy Kolodyazhnyy 8 June 2017 в 17:37
  • 4
    @ 최세훈 см. Мой отредактированный ответ – Sergiy Kolodyazhnyy 8 June 2017 в 17:46
  • 5
    Оно работает. Благодарю. – SeHoon 8 June 2017 в 17:48

Другие вопросы по тегам:

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