¿Cuál es la mejor herramienta para realizar el procesamiento de texto en Linux o Mac? [cerrado]

StackOverflow https://stackoverflow.com/questions/2445500

  •  20-09-2019
  •  | 
  •  

Pregunta

Yo por lo general necesito hacer una buena cantidad de procesamiento de texto para mi investigación, tales como la eliminación de la última ficha de todas las líneas, la extracción de los dos primeros símbolos de cada línea, dividiendo cada línea en tokens, etc.

¿Cuál es la mejor manera de realizar esto? Debería aprender Perl para esto? O debería aprender algún tipo de comandos shell? La principal preocupación es la velocidad. Si tengo que escribir código largo para tales cosas, en contra del propósito.

EDIT:

empecé a aprender sed en la recomendación @Mimisbrunnr 's y ya podía hacer lo que necesitaba. Pero parece que la gente prefiere awk más. Por lo tanto, a tratar eso. Gracias por todas sus respuestas.

¿Fue útil?

Solución

Perl y AWK vienen a la mente, aunque Python va a hacer, si usted prefiere no aprender un nuevo idioma.

Perl es un lenguaje de propósito general, awk de más orientado a texto de procesamiento del tipo que has descrito.

Otros consejos

Para hacer edición sencilla de vapor que sed es una gran utilidad que viene de serie en la mayoría de las cajas de * nix, pero para nada mucho más complejo que eso le sugiero ponerse en Perl. La curva no es tan malo y que es ideal para escribir la mayoría de las formas de análisis de texto regular. Una gran referencia se puede encontrar aquí .

#!/usr/bin/env python
# process.py     
import fileinput

for line in fileinput.input(): # you could use `inplace=True` parameter here
    words = line.split() # e.g. split on white spaces
    all_except_last = words[:-1]
    print ' '.join(all_except_last)
    # or
    first_two = words[:2]
    print ' '.join(first_two)

Ejemplos:

$ echo a b c | python process.py
$ ./process.py input.txt another.txt

* nix herramientas tales como awk/grep/tail/head/sed etc son buenas herramientas de procesamiento de archivos. Si desea buscar patrones en los archivos y procesarlos, se puede usar awk. Para los archivos grandes, se puede utilizar una combinación de grep + awk. Grep por su velocidad en la búsqueda de patrones y awk por su capacidad para manipular el texto. con respecto a la sed, sed oftern lo hace, awk puede ya les hacer, así que me resulta redundante para usar sed para el procesamiento de archivos.

En términos de velocidad de procesamiento de archivos, awk es a menudo a la par, o, a veces mejor que Perl y otros lenguajes.

Además, 2 muy buenas herramientas para conseguir el frente y la parte posterior de un ayuno de archivos, son tail y head. Así que para obtener las últimas líneas, puede utilizar tail.

La mejor herramienta depende de la tarea a realizar, por supuesto. Junto a las habituales herramientas * nix como sed / awk, etc y lenguajes de programación (Perl, Python) citado por otros, actualmente para el tratamiento de textos que necesito en el formato de datos original no sigue reglas de análisis rígidos, pero puede variar un poco, me encontré muy bien con las macros y funciones Vim Vimscript que llamo dentro del editor Vim.

Algo como esto (para el Vim no iniciados): se escribe la función (s) de procesamiento, por ejemplo. TxtProcessingToBeDone1 () en un archivo de script.vim, fuente con: script.vim fuente, a continuación, abra el archivo (s) que desea editar y:

: llame TxtProcessingToBeDone1 ()

en el búfer entero de una sola vez o como operación de un impulso que repetirse en lugar de con @: @@ y las llaves. También múltiples buffers / archivos se pueden procesar al mismo tiempo con: bufdo y:. Argdo

Con una función Vimscript puede repetir todas las tareas que hacer en una sesión de edición regular (buscar un patrón, reg-ex, sustitución, mover, borrar, tirón, etc, etc), automatizar y aplicar un poco flujo de control de programación (si / entonces).

Consideraciones similares se aplican a otros editores de secuencias de comandos avanzados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top