Solución para un error que encuentra EOL donde no hay uno?

0

MacOS 10.13.3 (y versiones anteriores)

Tengo un archivo de texto que contiene chino e inglés, con las dos pestañas separadas.

Si quiero buscar un carácter en particular al final de una frase pero no en el medio, puedo probar egrep "饱\t" *file* pero aparece un mensaje de continuación. Si interrumpo (Ctl-C) y hago una flecha hacia arriba, bash / Terminal me dice que el comando anterior era egrep "饱

Pero si uso comillas simples, funciona. Esto me hizo pensar que la cáscara tenía el error. Pero algunos experimentos revelaron que sucede con algunos comandos de shell y no con otros. echo $LANG da en_US.UTF-8

Lo he visto con comillas dobles en muchos caracteres. No lo he visto con comillas simples, pero eso no significa que no haya ninguna.

Mi problema es que necesito combinar definiciones de varios archivos, donde el chino es el mismo pero el resto de la línea puede ser diferente. Al menos uno de los archivos tiene más de cinco mil líneas, por lo que hacer una clasificación y luego buscar líneas adyacentes no es práctico. Intenté colocarlas en una hoja de cálculo, ordenar y tener una columna de fórmulas que comparan líneas adyacentes, pero desafortunadamente, ambas clasifican en bash y en LibreOffice Calc tienen el mismo error en sus rutinas de clasificación, ¡así que los duplicados no terminan juntos! o por ejemplo, A y B eran dos caracteres chinos diferentes, cada uno era el primer carácter de los archivos dos veces, y cada uno iba seguido de una pestaña (verificada al examinar con od -xc que los patrones de bytes eran correctos y que no había caracteres no imprimibles antes de la pestaña). Pero se clasificaron en la secuencia A B A B. Ya sé que otros estaban más separados, no lo sé.

Debido al error de ordenación, quería hacer algo como

awk '{print $1}' file1 | while read ITEM; do
  egrep "^$ITEM\t" file1 >> MergeDir/$ITEM # avoid items where $ITEM is a substring
  egrep "^$ITEM\t" file2 >> MergeDir/$ITEM
  egrep "^$ITEM\t" file3 >> MergeDir/$ITEM
done

Luego, pude editar cualquier archivo que tuviera más de una línea en archivos de una sola línea y finalmente concatenar todos los archivos de una sola línea.

Incluso si supiera que un solo tick funcionaría para todos los personajes, no funcionaría aquí porque evitaría que el shell expanda la variable.

La única solución que he pensado es generar un script gigantesco que tenga todas las búsquedas individuales completamente escritas sin variables. Incluso entonces todavía hay dudas sobre los ticks únicos.

¿Algún método alternativo? (que, con suerte, no lleva horas de preparación o demasiados milisegundos por elemento para ejecutar)

También me gustaría intentar usar SQL, pero la forma en que los documentos de LibreOffice dicen que para importar archivos sin formato y / o hojas de cálculo no funciona. (Hmm, instalé MySQL; tal vez lo intente).

    
pregunta WGroleau 22.02.2018 - 07:15

0 respuestas

Lea otras preguntas en las etiquetas