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.]