Por ejemplo, tengo un archivo de texto y cada línea es una cadena larga. Quiero excluir 2 "segmentos" de esta cadena, digamos las columnas 1-7 y 20-22. Entonces, las 2 líneas inferiores a continuación coincidirían:
123456789012345678901234567890
------------------------------
xxxxxxxAAAAAAAAAAAAxxxBBBBBBBB
yyyyyyyAAAAAAAAAAAAyyyBBBBBBBB
Sé que WinMerge tiene un complemento "IgnoreColumns", pero nunca he funcionado así. En este ejemplo, le cambiaría el nombre a IgnoreColumns_1-7, 20-22.dll, lo seleccionaría en el menú de complementos y elegiría "Pre-Differ". pero nunca ha funcionado.
Voy a comparar archivos enormes que no quiero modificar. No me opongo a editarlos en secuencia en comparación con sed o algo así, pero preferiría no modificar los archivos reales. Todavía no elegí alimentar sed a diff solo porque esperaba una vista más visual de los datos.
Respuesta1
Lo siguiente funciona en Linux y Cygwin.
vimdiff <(cut -c8-19,23- file1) <(cut -c8-19,23- file2)
Por alguna razón en Cygwin, Vim indica que cada archivo ha cambiado desde que comenzó la edición y pregunta: "[O]K, (L)cargar archivo:". Simplemente escribe O
cada vez.
Es cierto que no puedes ver las columnas omitidas, pero es una comparación visual, una al lado de la otra.
Respuesta2
Si aún desea que funcione el complemento "IgnoreColumns" de WinMerge... parece que está cerca. Dos notas:
Para su ejemplo, en la subcarpeta de WinMerge
MergePlugins
, copieIgnoreColumns.dll
aIgnoreColumns_1-7_20-22.dll
(sin espacios y usando subrayado en lugar de coma).Salga de WinMerge por completo y vuelva a ejecutarlo después de colocar esa DLL. ("Recargar complementos" actualizará el menú desplegable
Plug-ins
/ , pero no actualizará la funcionalidad).List
Nota al margen: recomiendo una versión "compatible pero no oficial" de WinMerge (2.13.20.12) que incluye comparaciones tripartitas. Ir aConstrucciones no oficiales de WinMerge, y en la parte inferior verás la "versión compatible con diferenciación de 3 vías".
Respuesta3
Al igual que la respuesta de Diogo_Rocha, puede modificar el archivo de antemano para eliminar las columnas que no desea probar y luego ejecutar diff. Pero solo con cosas de línea de comandos.
Entonces, para su ejemplo, podría eliminar las 'columnas' 1-7 y 20-22.
sed 's/.\{7\}\(.\{12\}\).\{3\}\(.*\)/\1\2/' test.txt > test2.txt
diff -u test2.txt whatnot.txt
Editar:Robo descarado de la mejor respuesta de Garyjohn.
diff -u <(cut -c8-19,23- test1.txt) <(cut -c8-19,23- test2.txt) | less
Respuesta4
Si pudiera entender su duda, está intentando excluir o seleccionar columnas específicas de un archivo de texto. Si es cierto, puedes hacerlo con elpanel de textosolicitud. Instálelo y abra su archivo de texto, luego presione la tecla "Alt" al mismo tiempo que selecciona columnas específicas de su texto. Con estas columnas seleccionadas podrás copiar, cortar o eliminar cada una de las que necesites.