Todo geek linux necesita saber sed y awk. Este es el por qué…

Vídeo: Etapa de inscripciones convocatoria 427 de 2016 - SED de Bogotá - Planta Administrativa

Dos de las mayoría de las utilidades de Linux penalmente subestimada son Sed y Awk. Aunque es cierto que puede parecer un poco arcano, si alguna vez tiene que hacer cambios repetitivos hasta grandes piezas de código o texto, o si alguna vez tiene que analizar un texto, SED y AWK tienen un valor incalculable.

Entonces, ¿qué son? ¿Cómo se usan? Y cómo, cuando se combinan juntos, hacer que sea más fácil de procesar texto?

¿Qué es la sed?

Sed fue desarrollado en 1971 en los Laboratorios Bell, por el legendario pionero de la computación Lee E. McMahon.

El nombre se refiere a editor de flujo, y eso es un poco lo que hace. Se le permite editar los cuerpos o corrientes de texto mediante programación, a través de un lenguaje de programación compacto y simple, pero Turing completo.

El modo de funcionamiento es simple: se lee el texto, línea por línea en un búfer. Para cada línea, se va a realizar las instrucciones predefinidas, en su caso.

Por ejemplo, si alguien era escribir una secuencia de comandos sed que sustituyó la palabra “cerveza” con “soda” y, a continuación, pasó en un archivo de texto que contiene la totalidad de las letras de “99 botellas de cerveza en la pared”, que iría a través de ese archivo en una línea por línea, e imprimir “99 botellas de soda en la pared”, y así sucesivamente.

El guión más básico Sed es una Hello World. Aquí, nosotros usamos la utilidad Unix eco, que simplemente cadenas de salida, para imprimir “Hello World”. Pero nosotros tubería a este Sed y le diremos que reemplazar “mundo” con”Dave”. Auto explicativo cosas.

eco "Hola Mundo" | s SED / mundo / David

sedawk-dave

También se pueden combinar instrucciones sed en archivos, si tiene que hacer alguna edición más complicada. Inspirado por esta hilarante hilo de Reddit, voy a tomar la letra de A-Ha de Take On Me, y reemplazar cada instancia de “I”, “Me”, y “Mi”, con Greg.

En primer lugar, voy a poner la letra de la canción en un archivo de texto llamado tom.txt. Entonces voy a abrir mi editor de texto preferido (mi favorito es Vim, pero nano y gedit son excelentes opciones), y añadir las siguientes líneas. Asegúrese de que el archivo se crea termina con .SED.Los 7 mejores razones para dar la Vim editor de texto una oportunidadLos 7 mejores razones para dar la Vim editor de texto una oportunidadDurante años, he tratado de un editor de texto tras otro. Lo que sea, lo probé. He utilizado todos y cada uno de estos editores durante más de dos meses, como mi principal editor del día a día. De alguna manera, yo ...Lee mas

SED-greg-sed

Usted puede notar que en el ejemplo anterior, he repetido a mí mismo (por ejemplo, s / ME / Greg y / s / Me / Greg /). Esto se debe a que algunas versiones de sed, como el que se incluye con Mac OS X, hacen no mayúsculas y minúsculas apoyo coincidente. Como resultado, tenemos que escribir dos instrucciones sed para cada palabra, por lo que reconoce la versión en mayúsculas y en minúsculas.

Esto no va a funcionar perfectamente, como si usted ha reemplazado cada instancia de “I”, “Me”, y “Mi” a mano. Recordemos, que sólo estamos usando esto como un ejercicio para demostrar cómo se pueden agrupar instrucciones sed en una secuencia de comandos y ejecutarlos con un solo comando.

Entonces, tenemos que invocar el archivo. Para hacer eso, se corre este comando.

tom.txt gato | SED-f greg.sed

Vamos a reducir la velocidad y mirar lo que hace esto. lectores de ojos de águila se han dado cuenta de la que estamos no Echo usando aquí. Estamos utilizando gato. Eso es porque mientras el gato se imprimirá todo el contenido del archivo, el eco sólo se imprimirá el nombre del archivo. Tendrás también notamos que se nos acaba de sed con la bandera “f”. Esto le dice a él para abrir el script como un archivo.

El resultado final es la siguiente.

SED-Greg-script

Es también digno de mención que el SED soporta expresiones regulares (regex). Estos le permiten definir patrones de texto, utilizando una sintaxis especial y complicado.

Aquí está un ejemplo de cómo podría funcionar. Vamos a tomar las antes mencionadas letras de canciones, pero el uso de expresiones regulares para imprimir cada línea que no hace comenzar con “Toma”.

tom.txt gato | SED / ^ Tome / d

SED-regex-take

Sed es, por supuesto, increíblemente útil. Pero es aún más potente cuando se combina con Awk.

¿Qué es Awk?

Awk, como sed, es un lenguaje de programación diseñado para hacer frente a los grandes cuerpos de texto. Pero mientras Sed se utiliza para procesar y modificar el texto, Awk se utiliza sobre todo como herramienta de análisis y la presentación de informes.

Como sed, awk fue desarrollado por primera vez en los laboratorios Bell en la década de 1970. Su nombre no proviene de lo que el programa hace, sino más bien los apellidos de cada uno de los autores - Alfred Aho, Peter Weinberger, y Brian Kernaghan.

Awk funciona mediante la lectura de un archivo de texto o la entrada de corriente de una línea a la vez. Cada línea se analizará para ver si coincide con un patrón predefinido. Si se encuentra una coincidencia, se realiza una acción.

Pero mientras SED y AWK pueden compartir propósitos similares, son dos lenguajes completamente diferentes, con dos filosofías de diseño completamente diferentes. Awk se asemeja más a algunos lenguajes de propósito general, al igual que C, Python y Bash. Tiene cosas como funciones, y un enfoque similar a C más para cosas como iteración y las variables (James Bruce explicado cómo las obras de iteración). En pocas palabras, se siente más como un lenguaje de programación.Cómo escoger un lenguaje de programación aprender hoy & Obtener un gran trabajo en 2 añosCómo escoger un lenguaje de programación aprender hoy & Obtener un gran trabajo en 2 añosPuede tomar años de trabajo dedicado para convertirse en un verdadero buen programador- Entonces, ¿hay una manera de elegir el idioma correcto para comenzar a partir de hoy, con el fin de ser contratado mañana?Lee mas

Por lo tanto, vamos a probarlo. El uso de las letras a Take On Me, vamos a imprimir todas las líneas que son más de 20 caracteres.

longitud awk `($ 0) gt; 80 `tom.txtawk de longitud

El siguiente ejemplo he desvergonzadamente cribbed de la documentación oficial Awk. Pero es un gran ejemplo del potencial de este potente y pequeña lengua,. También es una gran demostración de cómo las cosas como iteración y las variables trabajan en ella. En primer lugar, crear un archivo llamado “WordCount.awk”, y añadir las siguientes líneas.

{For (i = 1- i lt; = NF-i ++) frec [$ i] ++}
FIN {for (palabra en frec) printf "% S t% d n", Palabra, frec [palabra]}

Guardarlo, y luego ejecutarlo con el siguiente comando.

awk -f WordCount.awk tom.txt

awk-wordcount
Fresco, ¿verdad? Probablemente notará que no son en ningún tipo de orden. Tú poder ordenar los resultados usando la utilidad de tipo Unix. Pero eso se lo dejamos para otro día. Vamos a mantenerlo simple.

Vídeo: The Expert (Short Comedy Sketch)

La combinación de las dos

Awk y sed son a la vez muy potente cuando se combina. Usted puede hacer esto mediante el uso de tuberías de Unix. Esos son los “|” bits entre los comandos.

Vamos a probar esto: Vamos a enumerar todas las líneas de Take On Me que tienen más de 20 caracteres, utilizando Awk. A continuación, vamos a quitar todas las líneas que comienzan con "Tomar". En conjunto, todo se ve así:

awk `longitud ($ 0) gt; 20` tom.txt | SED / ^ Tome / d

Y produce esto:

awk-longitud-sed

Ahora vamos a la vuelta a esta situación. Vamos a empezar por la eliminación de todas las líneas que comienzan con Take, y luego tubería a Awk, donde vamos a contar cuántas veces aparece cada palabra. Se ve un poco como esto:

Vídeo: SED CHOCO DENUNCIA QUE HAY QUIENES REALIZAN COBROS PARA NOMBRAR DOCENTES

tom.txt gato | SED / ^ Tome / d | awk -f WordCount.awk

awk-wordcount-sed

Vídeo: Formación de Docentes Financiada por la Secretaria de Educación Distrital

La potencia de sed y awk

Sólo hay tanto que se puede explicar en un solo artículo. Pero espero que he ilustrado cómo inmensamente poderosa SED y AWK son reales. En pocas palabras, son una potencia de procesamiento de textos.

¿Así que, por que deberías preocuparte? Bueno, además del hecho de que nunca se sabe cuando se necesita hacer cambios repetitivos, predecibles a un documento de texto, SED y AWK son excelentes para analizar archivos de registro. Esto es especialmente útil cuando se está tratando de depurar un problema en su servidor LAMP, o mirar sus registros de acceso para ver si el servidor ha sido hackeado.Se inscribieron para Alojamiento Web SSH-solamente? No se preocupe - Instalar fácilmente cualquier software WebSe inscribieron para Alojamiento Web SSH-solamente? No se preocupe - Instalar fácilmente cualquier software WebNo sabe nada acerca operativo Linux a través de su poderosa línea de comandos? No se preocupe más.Lee mas

¿Ha descubierto un uso interesante para SED y AWK? ¿Hay otras utilidades de Linux que considere poco apreciada? Déjame saber en los comentarios de abajo, y vamos a charlar.

Artículos Relacionados