Je cherche un moyen simple de diriger le résultat de md5sum
dans une autre commande. Quelque chose comme ça:
$echo -n 'test' | md5sum | ...
Mon problème est qu'il md5sum
génère non seulement le hachage de la chaîne, mais également un hypen, ce qui indique que l'entrée provient de stdin. J'ai vérifié le fichier man et je n'ai trouvé aucun indicateur pour contrôler la sortie.
echo -n
lorsque les données de texte sont inconnues. Utilisezprintf '%s' "$DATA"
plutôt. Contrairementecho -n "$DATA"
, cela fonctionnera quandDATA="-n"
(entre autres exemples).Réponses:
Vous pouvez utiliser la commande cut ; il vous permet de couper une certaine plage de caractères / octets de chaque ligne d'entrée. Étant donné que le hachage MD5 a une longueur fixe (32 caractères), vous pouvez utiliser l'option
-c 1-32
pour ne conserver que les 32 premiers caractères de la ligne d'entrée:Alternativement, vous pouvez dire
cut
de diviser la ligne à chaque espace et de ne produire que le premier champ: (notez les guillemets autour du caractère espace)Voir la page de manuel de coupe pour plus d'options.
la source
-d
+-f
pour que celamd5sum
puisse être remplacé parsha1sum
ou autre chose plus tard.awk
fonctionne aussi:echo -n test | md5sum | awk -F" " '{print $1}'
ouawk -F" " '{print $1}' <(echo -n test | md5sum)
-F" "
option toawk
est très étrange à voir, étant donné que c'est la valeur par défaut pourawk
.Vous pouvez
cut
:Ici,
-d' '
choisit l'espace comme délimiteur et-f1
demande le premier champ (avant un délimiteur).la source
Utiliser awk fonctionne aussi très bien:
Une autre façon consiste à créer une sous-chaîne. Comme vous savez que le hachage md5 est une chaîne de 32 caractères, vous pouvez utiliser:
Ce ne sont que des manipulations de cordes, vous avez donc le choix!
la source