Bash 在文件开头添加0,以使该组为5位

Bash 在文件开头添加0,以使该组为5位,bash,math,sh,Bash,Math,Sh,例如,我有一个包含01的文件 11011000101000111010001100101010010100010110010101110111011101011011111111100100010011001111100011011111100010001100010111011111011010111000101000000110010010 我的目标是使用bash脚本创建一组5个字符。 在本例中,我有158个字符,但我没有得到5个字符的组 11011 00010 10001 11010 0

例如,我有一个包含01的文件

11011000101000111010001100101010010100010110010101110111011101011011111111100100010011001111100011011111100010001100010111011111011010111000101000000110010010
我的目标是使用bash脚本创建一组5个字符。 在本例中,我有158个字符,但我没有得到5个字符的组

11011
00010
10001
11010
00110
01010
10010
10001
01100
10101
11011
10111
01011
01111
11111
00100
01001
10011
11100
01101
11111
00010
00110
00101
11011
11101
10101
11000
10100
00001
10010
010

我需要添加两个零(在本场景中)以获得一组5个字符(或位)。

对于bash,您可以执行以下操作:

zeros=00000
printf "${zeros:0:$(( 5 - ${#input} % 5 ))}%s" "$input"

(其中输入是您的输入字符串)

使用GNU awk和
FPAT

$ awk '
BEGIN {
    FPAT="[01]{5}"
    OFS="\n"
}
{
    $0=sprintf("%0" 5-length%5 "d%s",0,$0)
    $1=$1
}
1' file
输出:

00110
11000
...
01100
10010

你想在开始时添加它们吗?你需要一个循环来添加零,直到文件长度模5为零。你希望结果是什么样的?是的,在开始时我认为最好是修改原始脚本。但是您没有提供它…
zeros=00000 printf“${zeros:0:$((5-${cat test.txt}%5))}%s”“test.txt”
我试过使用cat,但我得到了您想要的错误替换
$(cat test.txt)
(圆括号,而不是大括号)注意,如前所述,当字符串已经很好地平衡时,这将在5
0
s之前添加。我需要了解需要添加多少0,这是我的问题