Table of Contents
Cómo usar Awk y expresiones regulares para filtrar texto o cadenas en archivos
Cuando ejecutamos ciertos comandos en Unix/Linux para leer o editar texto de una cadena o archivo, la mayoría de las veces tratamos de filtrar la salida a una determinada sección de interés. Aquí es donde el uso de expresiones regulares resulta útil.
Lea también: 10 operadores de encadenamiento de Linux útiles con ejemplos prácticos
¿Qué son las expresiones regulares?
Una expresión regular se puede definir como cadenas que representan varias secuencias de caracteres. Una de las cosas más importantes de las expresiones regulares es que le permiten filtrar la salida de un comando o archivo, editar una sección de un texto o archivo de configuración, etc.
Características de la expresión regular
Expresiones regulares están formados por:
- Caracteres ordinarios. como espacio, guión bajo (_), AZ, az, 0-9.
- Metacaracteres. que se expanden a caracteres ordinarios, incluyen:
- (.) Coincide con cualquier carácter individual excepto una nueva línea.
- (*) coincide con cero o más existencias del carácter inmediato que lo precede.
- [carácter (s)] coincide con cualquiera de los caracteres especificados en los caracteres, también se puede usar un guión (-) para referirse a un rango de caracteres como como [af], [1-5], etc.
- ^ coincide con el comienzo de una línea en un archivo.
- $ coincide con el final de la línea en un archivo .
- \ es un carácter de escape.
Para filtrar el texto, uno tiene que usar un filtro de texto herramienta ering como awk. Puedes pensar en awk. como un lenguaje de programación propio. Pero para el alcance de esta guía sobre el uso de awk. lo cubriremos como una herramienta de filtrado de línea de comandos simple.
La sintaxis general de awk es:
# awk ‘script’ nombre de archivo
Donde ‘script’ es un conjunto de comandos que awk. y se ejecutan en el archivo, nombre de archivo.
Funciona leyendo una línea determinada en el archivo, hace una copia de la línea y luego ejecuta el script en la línea. Esto se repite en todas las líneas del archivo.
El ‘script’ tiene el formato ‘/patrón/acción’ donde patrón. es una expresión regular y acción. es lo que hará awk cuando encuentre el patrón dado en una línea.
Cómo utilizar la herramienta de filtrado Awk en Linux
En los siguientes ejemplos, nos centraremos en en los metacaracteres que discutimos anteriormente bajo las características de awk.
Un ejemplo simple de usar awk:
El siguiente ejemplo imprime todas las líneas en el archivo /etc/hosts. desde no se proporciona ningún patrón.
# awk ‘// print’/etc/hosts
Awk imprime todas las líneas en un archivo Use Awk con patrón:
En el ejemplo siguiente, se ha dado un patrón localhost, por lo que awk coincidirá con la línea que tiene localhost. en el archivo/etc/hosts.
# awk ‘/localhost/ print’/etc/hosts
Awk Imprime una línea coincidente dada en un archivo usando Awk con (.) Comodín en una P attern
El (.) coincidirá con cadenas que contengan loc. localhost. localnet. en el siguiente ejemplo.
Es decir * l some_single_character c *.
# awk ‘/lc/ print’/etc/hosts
Use Awk para imprimir cadenas coincidentes en un archivo usando Awk con caracteres (*) en un patrón
Coincidirá cadenas que contienen localhost. localnet. líneas. capaces. como en el ejemplo siguiente:
# awk ‘/l * c/ print’/etc/localhost
Use Awk para hacer coincidir las cadenas en el archivo
También se dará cuenta de que (*) intenta obtener la coincidencia más larga posible que pueda detectar .
Veamos un caso que demuestre esto, tome la expresión regular t * t que significa coincidir cadenas que comienzan con la letra t y terminan con t en la línea siguiente:
esto es tecmint, donde obtienes los mejores buenos tutoriales, procedimientos, guías, tecmint.
Obtendrá las siguientes posibilidades cuando use el patrón/t * t/:
esto es t esto es tecmint esto es tecmint, donde se obtiene t esto es tecmint, donde se obtiene lo mejor bueno t esto es tecmint, dónde obtienes los mejores buenos tutoriales, cómo es tecmint, dónde obtienes los mejores buenos tutoriales, cómo, guías, esto es tecmint, dónde obtienes los mejores buenos tutoriales, cómo, guías, tecmint
Y (*) en/t * t/carácter comodín permite a awk elegir la última opción:
esto es tecmint, donde obtienes los mejores buenos tutoriales, procedimientos, guías, tecmint Usando Awk con set [carácter (s)]
Tomemos por ejemplo el conjunto [al1], aquí awk coincidirá con todas las cadenas que contengan el carácter ao 1 en una línea en el archivo /etc/hosts.
# awk ‘/[al1]/ print’/etc/hosts
Use-Awk para imprimir caracteres coincidentes en el archivo
El siguiente ejemplo coincide con cadenas que comienzan con K o k seguidas de T:
# awk ‘/[Kk] T/ print’/etc/hosts
Utilice Awk para imprimir cadenas coincidentes en un archivo que especifique caracteres en un rango
Comprenda los caracteres con awk:
- [0-9] significa un solo número
- [az] significa que coincide con una sola letra minúscula
- [AZ] significa que coincide con una sola letra mayúscula
- [a-zA-Z] significa que coincide con una sola letra
- [a-zA-Z 0-9] significa coincidir con una sola letra o número
Veamos un ejemplo a continuación:
# awk ‘/[0-9]/ print’/etc/hosts
Utilice Awk para imprimir números coincidentes en el archivo
Toda la línea del archivo /etc/hosts. contiene al menos un solo número [0-9] en el ejemplo anterior.
Use Awk con (^) Meta Carácter
Coincide todas las líneas que comienzan con el patrón proporcionado como en el siguiente ejemplo:
# awk ‘/^ fe/ print’/etc/hosts # aw k ‘/^ ff/ print’/etc/hosts
Use Awk para imprimir todas las líneas coincidentes con el patrón Use Awk con ( $) Metacarácter
Coincide con todas las líneas que terminan con el patrón proporcionado:
# awk ‘/ab $/ print’/etc/hosts # awk ‘/ost $/ print’/etc/hosts # awk ‘/rs $/ pri nt ‘/etc/hosts
Use Awk para imprimir una cadena de patrón dada Use Awk con (\) carácter de escape
Le permite tomar el carácter que lo sigue como un literal, es decir, considérelo tal como es.
En el siguiente ejemplo, el primer comando imprime todas las líneas del archivo, el segundo comando no imprime nada porque quiero hacer coincidir una línea que tiene $ 25.00. pero no se usa ningún carácter de escape.
El tercer comando es correcto ya que un escape El carácter se ha utilizado para leer $. tal cual.
# awk ‘// print’ deals.txt # awk ‘/$ 25.00/ print’ deals.txt # awk ‘/\ $ 25.00/ print ‘Deals.txt
Usar Awk con carácter de escape
Resumen
Eso no es todo con la herramienta de filtrado de línea de comandos awk. los ejemplos anteriores son las operaciones básicas de awk. En las próximas partes avanzaremos sobre cómo utilizar funciones complejas de awk. Gracias por leer y por cualquier adición o aclaración, publique un comentario en la sección de comentarios.