web-dev-qa-db-fra.com

lire les 8 premiers caractères du fichier texte avec bash

Je voudrais lire uniquement les 8 premiers caractères d'un fichier texte et l'enregistrer dans une variable en bash. Existe-t-il un moyen de le faire en utilisant simplement bash?

42
user788171

Vous pouvez demander à head de lire un certain nombre d'octets. Pour votre cas particulier:

$ head -c 8 <file>

Ou dans une variable:

foo=$(head -c 8 <file>)
63
gpoo

en bash

help read

vous verrez que vous pouvez:

read -r -n 8 variable < .the/file

Si vous voulez lire les 8 premiers, indépendamment des séparateurs,

IFS= read -r -n 8 variable < .the/file

Mais évitez d'utiliser

.... | while IFS= read -r -n 8 variable

comme, en bash, les parties après un "|" sont exécutés dans un sous-shell: "variable" ne serait modifié que dans ce sous-shell, et sa nouvelle valeur est perdue lors de la recapture du shell actuel.

6
Olivier Dulac

Vous pouvez utiliser un tableau en bash et sélectionner uniquement les premiers caractères. Le guide Advanced Bash Scripting contient de bons exemples d'utilisation des tableaux.

1
mrkafk