Gera um grande número do mesmo byte [duplicado]

3

Estou gerando um arquivo binário como dados de teste para um software. Os dados de teste devem consistir em uma longa matriz do mesmo byte. Se fosse um byte zero eu usaria / dev / zero. Existe um comando para transformar os zeros de lá em outro byte, ou um comando para fazer algo similar?

Eu criei este script bash, mas essa solução não parece ideal. Só pode gerar um número fixo de bytes. Há certamente uma maneira de fazer isso com um script mais simples.

for i in $(seq 5); do
    echo $'\x10'
done
    
por jacwah 17.07.2015 / 23:13

1 resposta

2

Para usar /dev/zero para gerar n caracteres de sua escolha:

head -c "$n" /dev/zero | sed 's/\x00/a/g'

onde você deve substituir o a pelo que quer que o personagem tenha desejado.

Por exemplo:

$ n=50; head -c "$n" /dev/zero | sed 's/\x00/a/g'
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Isso pressupõe que você tenha um sed , como o GNU sed , capaz de entender \x00 .

Como alternativa, tr pode ser usado:

$ n=50; head -c "$n" /dev/zero | tr '
head -c "$n" /dev/zero | sed 's/\x00/a/g'
' 'a' aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    
por 17.07.2015 / 23:19