2010-03-05 7 views

Répondre

3

dd le fera

dd if=your_file of=output_tmp_file bs=1024 count=1 skip=0 

Et puis sauter = 1 pour le deuxième bloc, et ainsi de suite.

Il suffit ensuite de lire le fichier output_tmp_file pour obtenir le bloc.

+0

Merci pour la réponse, il semble définitivement prometteur. Après je l'ai fait: dd if = eco.log bs = 1024 compte = 1 skip = 1 (je préfère la sortie à stdout) J'ai obtenu l'information que je veux suivie par: 0 + 1 enregistrements dans 0 + 1 notices 508 octets (508 B) copiés, 6.6e-05 secondes, 7.7 Mo/s Comment puis-je ignorer les informations d'état d'E/S? J'ai manqué dd, et il n'y a pas une telle option silencieuse. – datasunny

+0

Peu importe, juste découvert ces stat de l'E/S sont sortis à stderr. Je peux facilement ignorer ceux-là. Merci a tous! – datasunny

1

split peut diviser un fichier en morceaux par octet donné comptent

6

Vous pouvez le faire avec read -n dans une boucle:

while read -r -d '' -n 1024 BYTES; do 
    echo "$BYTES" 
    echo "---" 
done < file.dat 
+0

comment puis-je faire imprimer en hexadécimal? –

0

vous pouvez utiliser fmt

par exemple 10bytes

$ cat file 
a quick brown fox jumps over the lazy dog 
good lord , oh my gosh 

$ tr '\n' ' '<file | fmt -w10 file 
a quick 
brown fox 
jumps 
over 
the lazy 
dog good 
lord , oh 
my gosh 

chaque ligne est de 10 caractères. Si vous voulez lire le 2ème morceau, passer à des outils tels que awk ..eg

$ tr '\n' ' '<file | fmt -w10 | awk 'NR==2' # print 2nd chunk 
brown fox 

Pour enregistrer chaque morceau dans un fichier, (ou vous pouvez utiliser split avec -b)

$ tr '\n' ' '<file | fmt -w10 | awk '{print $0 > "file_"NR}' 
1

Est-ce vous essayez de réellement lire un fichier texte? Comme avec tes yeux? Essayez less ou more

Questions connexes