repetidos repetidas quitar filas eliminar duplicados duplicadas con como borrar vim duplicates

vim - repetidas - ¿Quitar filas duplicadas en vi?



filas repetidas en excel (11)

Combinaría dos de las respuestas anteriores:

go to head of file sort the whole file remove duplicate entries with uniq 1G !Gsort 1G !Guniq

Si estaba interesado en ver cuántas líneas duplicadas se eliminaron, utilice control-G antes y después para verificar el número de líneas presentes en su búfer.

Tengo un archivo de texto que contiene una larga lista de entradas (una en cada línea). Algunos de estos son duplicados, y me gustaría saber si es posible (y en caso afirmativo, cómo) eliminar los duplicados. Me interesa hacer esto desde vi / vim, si es posible.


Desde la línea de comando solo hazlo:

sort file | uniq > file.new


En cuanto a cómo Uniq se puede implementar en VimL, ​​busco Uniq en un complemento que estoy manteniendo . Verá varias formas de implementarlo que se dieron en la lista de correo de Vim.

De lo contrario :sort u es, de hecho, el camino a seguir.


Esta versión solo elimina líneas repetidas que son contundentes. Quiero decir, solo borra líneas repetidas consecutivas. Usando el mapa dado, la función nota desorden con líneas en blanco. Pero si cambia el REGEX para que coincida con el inicio de la línea ^ , también eliminará las líneas en blanco duplicadas.

" function to delete duplicate lines function! DelDuplicatedLines() while getline(".") == getline(line(".") - 1) exec ''norm! ddk'' endwhile while getline(".") == getline(line(".") + 1) exec ''norm! dd'' endwhile endfunction nnoremap <Leader>d :g/./call DelDuplicatedLines()<CR>


Prueba esto:
:%s/^/(.*/)/n/1$//1/

Haga una copia antes de intentarlo. No está probado.


Seleccione las líneas en el modo de línea visual ( Shift + v ), luego :!uniq . Eso solo atrapará duplicados que vendrán uno tras otro.


Si está de acuerdo con ordenar su archivo, puede usar:

:sort u


Yo usaría !}uniq , pero eso solo funciona si no hay líneas en blanco.

Para cada línea en un archivo use :1,$!uniq .


awk ''!x[$0]++'' yourfile.txt si desea conservar el orden (es decir, la clasificación no es aceptable). Para invocarlo desde vim, :! puede ser usado.


:%s/^/(.*/)/(/n/1/)/+$//1/gec

o

:%s/^/(.*/)/(/n/1/)/+$//1/ge

esta es mi respuesta para ti, puede eliminar múltiples líneas duplicadas y solo mantener una no eliminar!


g/^/(.*/)$/n/1/d

Funciona para mí en Windows. Las líneas deben ser ordenadas primero.