Tamanho do arquivo após o corte

0

Estou tentando verificar se dividi arquivos grandes corretamente em várias partes. Como exemplo de brinquedo, tenho um arquivo out_sample :

123456789012
123456789012
123456789012
123456789012
123456789012

Isto tem 64 bytes quando armazenado. Quando divido este arquivo em seis partes usando o corte, os arquivos resultantes têm 15 bytes cada:

#!/bin/sh
FILENAME="out_sample"
cut -c1-2 $FILENAME > a
cut -c3-4 $FILENAME > b
cut -c5-6 $FILENAME > c
cut -c7-8 $FILENAME > d
cut -c9-10 $FILENAME > e
cut -c11-12 $FILENAME > f

No total, significa 6 * 15 = 90 bytes. Qual é a diferença de 26 bytes entre o tamanho do arquivo original e a soma dos tamanhos dos novos arquivos? Notei que cut acrescenta nova linha no final do arquivo, isso provavelmente seria de 1 byte por arquivo? E o resto?

    
por Tomas Greif 08.09.2015 / 23:39

2 respostas

1

Quando você corta duas colunas de um arquivo, cut adiciona uma nova linha em cada linha. Portanto, cada arquivo de saída consiste em 5 linhas, com 2 números e uma nova linha cada. Isso explica 25 bytes extras (arquivo de um a cinco; o sexto arquivo tem apenas as novas linhas adicionadas que você joga fora cortando a coluna 13 para fora (nova linha no arquivo de entrada)). Existe o último byte vindo? Eu suponho que você usou um editor que não força uma nova linha na última linha do arquivo de entrada.

Portanto, nada está faltando.

    
por 09.09.2015 / 00:00
1

Para este aplicativo, você provavelmente desejará usar split em vez de cut . split -b 15 $FILENAME deve funcionar. Ele faz a escrituração automaticamente, ao invés de fazer você calcular as compensações de arquivos por conta própria.

EDIT: interpretar mal a questão; o comando split não divide em colunas, da mesma forma que pedaços do fluxo de bytes. Se você realmente quiser em coluna, a abordagem do OP é provavelmente a melhor disponível.

    
por 08.09.2015 / 23:43

Tags