¿Hay algún comando de Linux que se pueda usar para muestrear un subconjunto de un archivo? Por ejemplo, un archivo contiene un millón de líneas y queremos muestrear aleatoriamente solo mil líneas de ese archivo.
Para aleatorio quiero decir que cada línea tiene la misma probabilidad de ser elegida y ninguna de las líneas elegidas es repetitiva.
head
y tail
puede elegir un subconjunto del archivo pero no al azar. Sé que siempre puedo escribir un script de python para hacerlo, pero me pregunto si hay un comando para este uso.
Respuesta aceptada:
El shuf
El comando (parte de coreutils) puede hacer esto:
shuf -n 1000 file
Y al menos por ahora, las versiones no antiguas (agregadas en un compromiso de 2013), usarán el muestreo del depósito cuando sea apropiado, lo que significa que no debería quedarse sin memoria y está usando un algoritmo rápido.