Mi pregunta es similar a esta pregunta pero con un par de restricciones diferentes:
- Tengo una gran \nlista de palabras delimitadas: una palabra por línea. El tamaño de los archivos varía de 2 GB a 10 GB.
- Necesito eliminar cualquier línea duplicada.
- El proceso puede ordenar la lista durante el transcurso de la eliminación de los duplicados, pero no es obligatorio.
- Hay suficiente espacio en la partición para contener la nueva lista de palabras única que se genera.
He intentado ambos métodos, pero ambos fallan con errores de falta de memoria.
sort -u wordlist.lst > wordlist_unique.lst
awk '!seen[$0]++' wordlist.lst > wordlist_unique.lst
awk: (FILENAME=wordlist.lst FNR=43601815) fatal: assoc_lookup: bucket-ahname_str: can't allocate 10 bytes of memory (Cannot allocate memory)¿Qué otros enfoques puedo probar?
                    
                        linux
                                text-processing
                                uniq
                                
                    
                    
                        gran lobo
fuente
                
                fuente

Respuestas:
Intente usar ordenar con la opción
-o/ en--output=FILElugar de redirigir la salida. También puede intentar configurarlobuffer-sizecon-S/--buffer-size=SIZE. Además, intente-s/--stable. Y lea la página del manual, ofrece toda la información que le di.El comando completo que puede usar que podría funcionar para lo que está haciendo:
También es posible que desee leer la siguiente URL:
http://www.gnu.org/s/coreutils/manual/html_node/sort-invocation.html
Eso explica más a fondo el tipo que la página de manual.
fuente
sort: write failed: /root/tmp/sortVxscLn: No space left on device. El problema es un poco molesto porque no falla de inmediato. Parece que tiene que esperar a que la memoria se agote antes de que se produzca un error.sortpara usar un sistema de archivos con más espacio libre.