GNU/Linux >> Tutoriales Linux >  >> Linux

Manipulación de texto con sed y grep

Herramientas como sed (editor de flujo) y grep (impresión de expresión regular global) son formas poderosas de ahorrar tiempo y hacer su trabajo más rápido. Antes de profundizar en los casos de uso, me gustaría explicar brevemente las expresiones regulares (regexes), que son necesarias para la manipulación de texto que haremos más adelante.

¿Qué son las expresiones regulares? Cuando tratamos con archivos de registro, archivos de texto o un fragmento de código,

Necesito entender que todos estos consisten en personajes. Cuando la longitud del archivo es grande, se vuelve una necesidad filtrar ciertos patrones para facilitar la depuración. Encontrará ejemplos de expresiones regulares en estos casos de uso.

Grupo 1:Datos del servidor

Digamos que tiene un archivo que tiene una aparición de una cadena:

Ahora, ¿cómo se filtra site1? los detalles de (el archivo anterior es un ejemplo simple), para que solo pueda obtener la información necesaria y manipular las entradas?

Claramente, podemos ver que hay un patrón común ("despliegue en la nube") en todo el archivo. Entonces, ahora podemos usar técnicas de filtrado para obtener información del archivo usando grep . Lo recuerdo como "obtener regex n print".

Caso de uso 1

Si quiero los servidores de diferentes regiones, puedo usar grep de la siguiente manera:

Caso de uso 2

Ahora, suponga que desea filtrar los servidores en función de la IP. Puedes hacer lo mismo usando:

Caso de uso 3

Ahora, eche un vistazo al primer grep imagen de mando. Aunque conocía el rango de subred de su sistema, el comando imprimió la aparición de 10.1 en todo el archivo.

¿Cómo se puede resolver este tipo de caso de uso? Podemos manejar este problema usando filtrado avanzado basado en expresiones regulares, como este:

Este ejemplo es solo un posible uso de grep . Nuevamente, como se trata de un archivo relativamente pequeño, puede obtener lo que desea utilizando lo que se muestra arriba. El -v switch invierte el criterio de búsqueda, lo que significa que grep busca en el archivo sed-grep.txt e imprime todos los detalles, excepto el <search-pattern> (10.1. en este caso).

Caso de uso 4

Digamos que desea reemplazar las direcciones IP y mover todos los servidores en esas regiones a una subred diferente. Puedes usar sed para este caso de uso.

Desde la página man, sed usa el formato:

sed [options] commands [file-to-edit]

Nuestro comando para este caso de uso podría verse así:

Este comando se divide de la siguiente manera:

  • Los s significa sustituto.
  • El % es un delimitador (podemos usar cualquier carácter aquí).
  • El <search pattern> aparece después del primer % .
  • El <replace pattern> aparece después del segundo % .
  • El g significa reemplazo global (es decir, en todo el archivo).

O:

s%<search-pattern>%<replace-pattern>%g

Caso de uso 5

Incluso puede cambiar las regiones de los servidores en el archivo:

Caso de uso 6

Este caso de uso es más avanzado. Solo eliminaremos los comentarios (# ) desde un archivo usando sed :

Este comando dice que si # aparece como el primer carácter de una línea, para reemplazar esa línea con un espacio en blanco. Como resultado, este comando elimina los comentarios del archivo.

Grupo 2:/etc/passwd

Veamos algunos casos de uso más, esta vez relacionados con /etc/passwd .

Caso de uso 1

Suponga que desea capturar a los usuarios del archivo /etc/passwd expediente. Puedes usar sed de la siguiente manera:

Caso de uso 2

¿Qué sucede si solo desea obtener los primeros 10 usuarios de /etc/passwd? ? Puedes usar sed y awk para este propósito (tenga paciencia conmigo aquí): 

Este comando se desglosa como:

  • sed -n significa no imprimir todo.
  • p imprime las líneas del uno al 10.
  • awk aquí usa : como separador de campo e imprime la primera columna.

Caso de uso 3

Elimine un rango particular de líneas en archivos de texto usando sed :

Caso de uso de SELinux

Aquí hay un ejemplo sed comando para manipular SELinux:

Conclusión

Este es mi intento de darles a los lectores un adelanto de las posibilidades de usar sed y grep . Puedes hacer muchas manipulaciones de texto usando estos comandos. Consulte las diferentes opciones usando la página del manual para obtener más información.

[¿Quiere probar Red Hat Enterprise Linux? Descárguelo ahora gratis.]


Linux
  1. ¿Cómo se reemplaza el texto similar a sed con python?

  2. Eliminar ocurrencias de cadena en archivo de texto

  3. ¿Cómo insertar un texto al principio de un archivo?

  4. sed con cadena literal, no archivo de entrada

  5. Encuentre y reemplace texto en un archivo entre un rango de líneas usando sed

Edite texto en Linux con KWrite y Kate

Manipulación de texto en la línea de comando con grep

Cómo eliminar líneas vacías en archivos usando Grep, Sed y Awk

Uso y ejemplos sensibles a mayúsculas y minúsculas de Grep

AWK y nombres de archivo con espacio en él.

grep pares de patrones y archivo