sed awk

¿Cuál es la diferencia entre sed y awk?



(3)

1) ¿Cuál es la diferencia entre awk y sed?

Ambas son herramientas que transforman texto. PERO awk puede hacer más cosas además de manipular texto. Es un lenguaje de programación por sí mismo con la mayoría de las cosas que aprendes en programación, como matrices, bucles, control de flujo de flujo / etc, etc. También puedes "programar" en sed, pero no querrás mantener el código escrito en él. .

2) ¿Qué tipo de aplicación son los mejores casos de uso para herramientas sed y awk?

Conclusión: use sed para un análisis de texto muy simple. Cualquier cosa más allá de eso, awk es mejor. De hecho, puedes deshacerte del sed y usar awk. Ya que sus funciones se superponen y awk puede hacer más, simplemente use awk. También reducirás tu curva de aprendizaje.

  • ¿Cuál es la diferencia entre awk y sed?
  • ¿Qué tipo de aplicación son los mejores casos de uso para herramientas sed y awk?

Ambas herramientas están diseñadas para trabajar con texto y hay tareas para las que se pueden usar.

Para mí, la regla para separarlos es: Use sed para automatizar tareas que de otro modo haría en un editor de texto manualmente. Por eso se llama editor de flujo. (Puedes usar los mismos comandos para editar texto en vim). Utilice awk si desea analizar texto, es decir, contar campos, calcular totales, extraer y reorganizar estructuras, etc.

Tampoco debes olvidarte de grep . Use grep si solo desea buscar / extraer algo en un texto (archivo)


sed es un editor de secuencias. Funciona con flujos de caracteres por línea. Tiene un lenguaje de programación primitivo que incluye bucles de estilo goto y condicionales simples (además de la coincidencia de patrones y la coincidencia de direcciones). Hay esencialmente solo dos "variables": espacio de patrón y espacio de espera. La legibilidad de los scripts puede ser difícil. Las operaciones matemáticas son extraordinariamente torpes en el mejor de los casos.

Existen varias versiones de sed con diferentes niveles de soporte para las opciones de línea de comandos y características de idioma.

awk está orientado hacia campos delimitados por línea. Tiene construcciones de programación mucho más robustas que incluyen if / else , while , do / while y for (estilo C y iteración de matriz). Hay soporte completo para variables y matrices asociativas de una sola dimensión más (IMO) kludgey matrices multidimensionales. Las operaciones matemáticas se parecen a las de C. Tiene funciones y funciones de printf . La "K" en "AWK" significa " K ernighan" como en "Kernighan and Ritchie" de la fama del libro "Lenguaje de programación" (no olvidar A ho and W einberger). Uno podría escribir un detector de plagio académico usando awk .

GNU awk ( gawk ) tiene numerosas extensiones, incluyendo verdaderos arreglos multidimensionales en la última versión. Hay otras variaciones de awk incluyendo mawk y nawk .

Ambos programas usan expresiones regulares para seleccionar y procesar texto.

Tendría a usar sed donde hay patrones en el texto. Por ejemplo, podría reemplazar todos los números negativos en algún texto que tenga el formato "signo menos seguido de una secuencia de dígitos" (por ejemplo, "-231.45") por el formulario de "corchetes del contable" (por ejemplo, "(231.45)" ) usando esto (que tiene margen de mejora):

sed ''s/-/([0-9.]/+/)/(/1)/g'' inputfile

awk cuando el texto se parezca más a filas y columnas o, como awk refiere a ellos, "registros" y "campos". Si fuera a realizar una operación similar a la anterior, pero solo en el tercer campo en un archivo simple delimitado por comas, podría hacer algo como:

awk -F, ''BEGIN {OFS = ","} {gsub("-([0-9.]+)", "(" substr($3, 2) ")", $3); print}'' inputfile

Por supuesto, estos son solo ejemplos muy simples que no ilustran la gama completa de capacidades que cada uno tiene para ofrecer.