Bash - 强制固定可变长度,我可以比这更容易吗?
Bash - forced fixed variable length, can I do it easier than this?
我需要转换变量以使其具有准确的长度,如果它太短则将其扩展为空格,如果它太长则将其剪切。例如。对于 11 个字符的变量
$ var1=a
$ echo ${#var1}
1
$ var1=$(echo $var1 | sed 's/$/ /' | cut -c 1-11)
$ echo ${#var1}
11
虽然上面的方法有效,但对于我需要长字符串的情况似乎不太方便,所以我正在寻找更合适和优雅的东西。
使用printf
:
formatted=$(printf "%11.11s" "$var1")
示例:
printf "%11.11s\n" "a"
a
printf "%11.11s\n" "abcdefghijklmnop"
abcdefghijk
您可以看到它使输出精确到 11 个字符长。
我需要转换变量以使其具有准确的长度,如果它太短则将其扩展为空格,如果它太长则将其剪切。例如。对于 11 个字符的变量
$ var1=a
$ echo ${#var1}
1
$ var1=$(echo $var1 | sed 's/$/ /' | cut -c 1-11)
$ echo ${#var1}
11
虽然上面的方法有效,但对于我需要长字符串的情况似乎不太方便,所以我正在寻找更合适和优雅的东西。
使用printf
:
formatted=$(printf "%11.11s" "$var1")
示例:
printf "%11.11s\n" "a"
a
printf "%11.11s\n" "abcdefghijklmnop"
abcdefghijk
您可以看到它使输出精确到 11 个字符长。