A brief introduction to Linux | Part XI: Expresiones regulares y Metacaracteres

Iniciado por TerminusRoot, Noviembre 06, 2019, 01:21:11 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Hola, esta es la Undécima parte de A brief introduction to Linux.

Puede recapitular los otros post aqui abajito.

Parte I   : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Parte II  : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Parte III : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Parte IV  : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Parte V   : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Parte VI  : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Parte VII : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Parte VIII: No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Parte IX   : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Parte X    : No tienes permitido ver los links. Registrarse o Entrar a mi cuenta


Expresiones regulares y Metacaracteres

I. Buscando patrones

Trabajaremos con grep, una herramienta poderosa que nos ayuda con la coincidencia de patrones, y también practicaremos el uso de metacaracteres cuando trabaje con una shell.

Linux facilita la búsqueda a través de archivos de texto al incluir grep (impresión de expresión regular global).

Comencemos usando grep para buscar el patrón "admin" en el archivo **/etc/passwd **:

grep admin /etc/passwd



II. Exclusión de patrones y numeración de líneas

La opción -v permite excluir patrones de la búsqueda. El siguiente comando buscará el string nologin del patrón y excluirá las líneas que lo contienen de la salida. La opción -n agrega números de línea.

grep -nv nologin /etc/passwd



III. Comienzo de un patrón

El signo de intercalación (^) identifica el comienzo de una línea o palabra. Podemos buscar todas las líneas que comienzan con admin en el archivo /etc/passwd con el siguiente comando:

grep ^ admin /etc/passwd



IV. Fin de un patrón

Para marcar el final de una línea o palabra, podemos usar el carácter $. Ejecute el siguiente comando para buscar todas las líneas en el archivo /etc/passwd que terminan con bash:

grep bash$ /etc/passwd



V. Búsqueda sin distinción entre mayúsculas y minúsculas

Por defecto, la búsqueda en grep distingue entre mayúsculas y minúsculas. Para realizar una búsqueda que no distingue entre mayúsculas y minúsculas, podemos usar el modificador -i. El siguiente comando ejecutará una búsqueda sin distinción entre mayúsculas y minúsculas para el cloud en el archivo /etc/passwd:

grep -i cloud /etc/passwd




Puede ver que la palabra  comienza con una mayúscula ** C **.

VI. Expresión regular extendida y altenancia

La expresión regular extendida permite búsquedas más complejas, como las que incluyen alternancias.

Utilice cualquiera de los siguientes comandos para buscar admin o root en el archivo /etc/passwd:

grep -E 'admin|root' /etc/passwd

egrep 'admin|root' /etc/passwd




VII. Emparejar una palabra, usando caracteres de punto

Los caracteres de punto (.) Se pueden usar con grep para hacer coincidir las posiciones en la cadena de búsqueda. Ejecute el siguiente comando para buscar palabras en el archivo /etc/nfsmount.conf que comiencen con def seguido de cuatro caracteres:

grep -w def .... /etc/nfsmount.conf



VIII. Usando el * Carácter

Cuando trabajamos con shell, podemos usar metacaracteres para controlar la entrada-salida o realizar coincidencias. Por ejemplo, el carácter de asterisco (*) coincide de cero a un número ilimitado de caracteres. El siguiente comando generará nombres de todos los archivos en el directorio **/etc ** que comienzan con sys (seguido de cualquier carácter):

ls /etc/sys*




Para enumerar los archivos en el mismo directorio que terminan con .conf, emita el siguiente comando:

ls /etc/*.conf



IV. Usando el caracter ?

Podemos usar el signo de interrogación (?) Para que coincida exactamente con un carácter. El siguiente comando enumerará todos los directorios en /etc que tienen cuatro caracteres en su nombre:

ls -d /etc/ ????



X.Emparejar un conjunto de caracteres.

Los corchetes se pueden usar para especificar un rango o conjunto de caracteres para que coincidan. Ejecute el siguiente comando para enumerar los archivos en /etc/lvm/profile con los nombres que comienzan con ** l ** o m:

ls /etc/lvm/profile/[lm]*



Se puede Emparejar un rango de caracteres.El rango se especifica mediante el uso de secuencias adecuadas. El siguiente comando coincide con los nombres de archivo que comienzan con cualquier carácter del rango [a-c]: a, b y c:



XI. Salida de tuberia(Piping Output)


El pipe(|) envía la salida de un comando como entrada al siguiente. Ejecute el siguiente comando para enumerar el directorio ** /etc ** y envíe la salida a more:

ls /etc | more



También podemos numerar cada línea en la salida usando nl:

ls /etc | nl



Y ahora podemos construir un pipe usando múltiples pipe:

ls /etc | nl | more



XII. Prefijo con barra invertida

El carácter de barra diagonal inversa (o escape) () permite utilizar metacaracteres como caracteres normales.

Ejecutemos lo siguiente comando:

touch my file

Ahora enumere los archivos en el directorio:ls

Podemos observar  que se crearon dos archivos: file y my.

Ahora ejecutamos lo siguiente :

touch my\file
ls



Puede ver que de esta manera pudimos crear un archivo con un espacio en su nombre: my file



XIII. Cerrando con comillas simples


También podemos escapar de los caracteres encerrándolos entre comillas simples (').

Ingrese el siguiente comando:echo $PWD

Se emitió el valor de la variable $PWD, es decir, se ejecuto el comando PWD. Si realmente quisiéramos imprimir la cadena $PWD, podríamos enmascararla con comillas simples de la siguiente manera:

echo '$ PWD'



También podemos escapar de caracteres específicos con comillas simples. Primero, ejecutamos el comando  file en el archivo que creamos anteriormente, escapando del espacio con la barra invertida:

file my\ file

Ahora, ejecute el mismo comando, esta vez encerrando la barra diagonal inversa entre comillas simples:

file my'\' file


Podemos observar que ahora el comando file está buscando un archivo llamado my\, y el espacio ya no se escapa.



XIV. Cerrando con comillas dobles


Los metacaracteres de escape también se pueden lograr encerrando los caracteres entre comillas dobles ("), sin embargo, las comillas dobles todavía tratan la barra invertida, el signo de dólar y la comilla simple como caracteres especiales.

Ejecute los siguientes tres comandos para ver cómo funciona el escape con comillas dobles:

echo "$ LOGNAME"
echo "\ $ LOGNAME"
echo "'\' $ LOGNAME"