0

我有一个文件,内容为:

        000000000000000000000000
00000000000000000000000000000000
0000000000000000000000001f000000
01000000060000000000000034000000
3f000000000000000000000004000000
000000001b0000000900000000000000
00000000600300001000000009000000
010000000400000008000000

我想通过指定 col 的数量来重新排列其内容。例如,如果我说 col 的编号为 80,则输出应如下所示:

00000000000000000000000000000000000000000000000000000000000000000000000000000000
1f000000010000000600000000000000340000003f00000000000000000000000400000000000000
1b000000090000000000000000000000600300001000000009000000010000000400000008000000

谁能帮我这个 ?xxd 可以在这里达到目的吗?谢谢。

4

2 回答 2

6

您可以使用tr首先从内容中删除空格,然后使用fold以特定的线宽将它们换行。

cat infile.txt | tr -d "[:space:]" | fold -80
于 2012-09-04T10:23:45.280 回答
1

由于这个问题也被标记为 C,这里有一个 C 方法来做同样的事情:

#include <stdio.h>

int main(void)
{
    FILE* fp;
    int c, col;

    fp = fopen("datafile.txt", "r");

    col = 0;

    while ((c = fgetc(fp)) != EOF)
    {
        if (c == ' ' || c == '\n') // ignore spaces and newline
            continue;

        putchar(c); // output to stdout
        ++col;

        if (col == 80) // newline at column 80
        {
            putchar('\n');
            col = 0;
        }
    }

    fclose(fp);

    return 0;
}
于 2012-09-04T10:37:52.947 回答