Ir a un bucle while read
tiene muchos de los problemas mencionados en ¿Por qué se considera una mala práctica usar un bucle de shell para procesar texto?
Aquí, usaríaperl
:
sort -u < "$file" | perl -MDigest::MD5=md5_hex -lpe '
$_ = md5_hex($_). " - ". $_'
Su pregunta más general parece un duplicado o una variación de tee + cat :use una salida varias veces y luego concatene los resultados
Tenga en cuenta que no es porque dos líneas ordenen lo mismo (, lo que significa que sort -u
retiene solo una )que serán idénticas y tendrán la misma suma de verificación MD5. Es posible que desee utilizar LC_ALL=C sort -u
para que la clasificación y la distinción se basen en una comparación de bytes -a -en lugar de strcoll()
(. También tenga cuidado con algunas implementaciones sort
que podrían ahogarse con la entrada de texto que no es -que en la configuración regional C
aún incluiría líneas demasiado -largas, líneas sin terminar o líneas que contienen caracteres NUL ).