gpt4 book ai didi

linux - 在 Bash 中使用选定的字符(或十六进制代码)将字符串填充到一定长度?

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:57 24 4
gpt4 key购买 nike

我想用任何选定的字符(或十六进制代码)将 Bash 中的字符串填充到一定长度。

假设我有字符串 AABB 并希望使用 X 或 (0x00) 将其填充到长度 10:

AABBXXXXXX

我知道如何使用 printf 填充空格。如何填充任意字符(或十六进制代码)?

最佳答案

对于没有空格的字符串

使用printf用空格填充,然后用您选择的符号替换空格。一些例子:

printf %10s AABB | tr ' ' X打印XXXXXXAABB .
printf %-10s AABB | tr ' ' X打印AABBXXXXXX .

插入不可打印的符号而不是 X ,您可以将八进制转义序列传递给 trprintf可以将十六进制数转换为八进制数:

printf %10s AABB | tr ' ' \\$(printf %o 0x1f)打印字节1f 1f 1f 1f 1f 1f 41 41 42 42 (可以通过 od -tx1 -An 进行管道确认)。

对于带空格的字符串

str=AABB
yes "" | head -n $((10-"${#str}")) | tr \\n X
printf %s "$str"

交换最后两行以在右侧插入填充(例如 %-10s )。就像以前一样,您可以替换 X\\$(printf %o 0x1f)插入不可打印的字符。

关于linux - 在 Bash 中使用选定的字符(或十六进制代码)将字符串填充到一定长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50604111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com