特定宽度的文本格式
text formating to specific width
我写了一个脚本来显示我的带有 polybar 的笔记本的加速和减速。我 运行 遇到的问题是将 echo
的输出放入 formation.
ATM 我的输出看起来像这样(bash 终端中的脚本循环)...
WLAN0: ⬇️ 14 MiB/s ⬆️ 16 KiB/s
WLAN0: ⬇️ 60 B/s ⬆️ 0 B/s
WLAN0: ⬇️ 120 B/s ⬆️ 120 B/s
但我想把它排成一行,像这样...
WLAN0: ⬇️ 14 MiB/s ⬆️ 16 KiB/s
WLAN0: ⬇️ 60 B/s ⬆️ 0 B/s
WLAN0: ⬇️ 120 B/s ⬆️ 120 B/s
我的代码的本质是以下简化的行...
echo "yada: ⬇️ $string1 ⬆️ $string2"
变量包括数字和文本(最多 10 个字符),具体取决于传输速度。
所以两个emoji之间至少应该有12个静态字段。
但我不知道如何,我希望你能向我解释如何格式化某种变量宽度,我假设 printf
。
左对齐 printf
:
string1="14 MiB/s"; string2="16 KiB/s"
printf "yada: ⬇️ %-12s ⬆️ %-12s\n" "$string1" "$string2"
输出:
yada: ⬇️ 14 MiB/s ⬆️ 16 KiB/s
这里是对齐列的方法:
#!/usr/bin/env bash
dnIcon=$'247707'
upIcon=$'246707'
nMiBs=14
sMiBs="$nMiBs MiB/s"
nKiBs=16
sKiBs="$nKiBs KiB/s"
printf 'WLAN0: %s %-10s %s %-10s\n' "$dnIcon" "$sMiBs" "$upIcon" "$sKiBs"
示例输出:
WLAN0: ⬇️ 14 MiB/s ⬆️ 16 KiB/s
我写了一个脚本来显示我的带有 polybar 的笔记本的加速和减速。我 运行 遇到的问题是将 echo
的输出放入 formation.
ATM 我的输出看起来像这样(bash 终端中的脚本循环)...
WLAN0: ⬇️ 14 MiB/s ⬆️ 16 KiB/s
WLAN0: ⬇️ 60 B/s ⬆️ 0 B/s
WLAN0: ⬇️ 120 B/s ⬆️ 120 B/s
但我想把它排成一行,像这样...
WLAN0: ⬇️ 14 MiB/s ⬆️ 16 KiB/s
WLAN0: ⬇️ 60 B/s ⬆️ 0 B/s
WLAN0: ⬇️ 120 B/s ⬆️ 120 B/s
我的代码的本质是以下简化的行...
echo "yada: ⬇️ $string1 ⬆️ $string2"
变量包括数字和文本(最多 10 个字符),具体取决于传输速度。
所以两个emoji之间至少应该有12个静态字段。
但我不知道如何,我希望你能向我解释如何格式化某种变量宽度,我假设 printf
。
左对齐 printf
:
string1="14 MiB/s"; string2="16 KiB/s"
printf "yada: ⬇️ %-12s ⬆️ %-12s\n" "$string1" "$string2"
输出:
yada: ⬇️ 14 MiB/s ⬆️ 16 KiB/s
这里是对齐列的方法:
#!/usr/bin/env bash
dnIcon=$'247707'
upIcon=$'246707'
nMiBs=14
sMiBs="$nMiBs MiB/s"
nKiBs=16
sKiBs="$nKiBs KiB/s"
printf 'WLAN0: %s %-10s %s %-10s\n' "$dnIcon" "$sMiBs" "$upIcon" "$sKiBs"
示例输出:
WLAN0: ⬇️ 14 MiB/s ⬆️ 16 KiB/s