Linux Professional Institute Learning Logo.
Pasar al contenido principal
  • Inicio
    • Todos los recursos
    • LPI Learning Materials
    • Conviértete en colaborador
    • Publishing Partners
    • Conviértase en un Publishing Partner
    • Acerca de nosotros
    • FAQ
    • Colaboradores
    • Contáctenos
  • LPI.org
3.2 Lección 2
Tema 1: La Comunidad Linux y una carrera en el mundo del código abierto
1.1 Los sistemas operativos populares y la evolución de Linux
  • 1.1 Lección 1
1.2 Principales aplicaciones de código abierto
  • 1.2 Lección 1
1.3 Software de Código Abierto y las licencias
  • 1.3 Lección 1
1.4 Destrezas TIC y el trabajo con Linux
  • 1.4 Lección 1
Tema 2: Encontrando el camino en un sistema Linux
2.1 Aspectos básicos de la línea de comandos
  • 2.1 Lección 1
  • 2.1 Lección 2
2.2 Uso de la línea de comandos para obtener ayuda
  • 2.2 Lección 1
2.3 Uso de directorios y listado de archivos
  • 2.3 Lección 1
  • 2.3 Lección 2
2.4 Crear, mover y borrar archivos
  • 2.4 Lección 1
Tema 3: El poder de la línea de comandos
3.1 Archivar ficheros desde la línea de comandos
  • 3.1 Lección 1
3.2 Buscar y extraer datos de los ficheros
  • 3.2 Lección 1
  • 3.2 Lección 2
3.3 Crear un script a partir de una serie de comandos
  • 3.3 Lección 1
  • 3.3 Lección 2
Tema 4: El sistema operativo Linux
4.1 La elección del sistema operativo
  • 4.1 Lección 1
4.2 Conocer el hardware del ordenador
  • 4.2 Lección 1
4.3 Donde los datos se almacenan
  • 4.3 Lección 1
  • 4.3 Lección 2
4.4 Tu ordenador en la red
  • 4.4 Lección 1
Tema 5: Seguridad y sistema de permisos de archivos
5.1 Seguridad básica e identificación de tipos de usuarios
  • 5.1 Lección 1
5.2 Creating Users and Groups
  • 5.2 Lección 1
5.3 Gestión de los permisos y la propiedad de los archivos
  • 5.3 Lección 1
5.4 Directorios y archivos especiales
  • 5.4 Lección 1
  1. Tema 3: El poder de la línea de comandos
  2. 3.2 Buscar y extraer datos de los ficheros
  3. 3.2 Lección 2

3.2 Lección 2

Certificación:

Linux Essentials

Versión:

1.6

Tema:

3 El poder de la línea de comandos

Objetivo:

3.2 Buscar y extraer datos de los ficheros

Lección:

2 de 2

Introducción

En esta lección se tratarán algunas herramientas que se utilizan para manipular texto. Estas herramientas son usadas con frecuencia por administradores de sistemas o programas para monitorear o identificar automáticamente información específica recurrente.

Búsquedas en archivos con grep

La primera herramienta de esta lección es el comando grep. Es la abreviatura de “global regular expression print” y su principal funcionalidad es buscar patrones específicos en los ficheros. El comando muestra la línea que contiene el patrón destacado en color rojo.

$ grep bash /etc/passwd
root:x:0:0:root:/root:/bin/bash
user:x:1001:1001:User,,,,:/home/user:/bin/bash

El comando grep, como la mayoría de los comandos, también puede modificar su comportamiento usando varias opciones. A continuación se muestran las más comunes:

-i

la búsqueda no distingue mayúsculas o minúsculas

-r

la búsqueda es recursiva (busca en todos los ficheros dentro de un directorio específico y sus subdirectorios)

-c

la búsqueda cuenta el número de coincidencias

-v

invertir la coincidencia para imprimir líneas que no concuerde con el término de búsqueda

-E

activa expresiones regulares extendidas (necesarias para algunos de los meta-caracteres más avanzados como | , + y ?)

Consulte la página de manual para obtener más información sobre este tema.

Expresiones regulares

Otra herramienta muy poderosa y que se utiliza para describir bits de texto dentro de los ficheros, son las llamadas expresiones regulares. Las expresiones regulares son extremadamente útiles en la extracción de datos de ficheros de texto mediante la construcción de patrones. Se utilizan generalmente dentro de scripts o al utilizar lenguajes de alto nivel, como Perl o Python.

Al trabajar con expresiones regulares, es muy importante saber que cada caracter cuenta y el patrón se escribe con el propósito de que coincida con una secuencia específica de caracteres, conocida como cadena. La mayoría de los patrones utilizan los símbolos ASCII normales, como letras, dígitos, puntuación u otros símbolos, pero también se pueden utilizar caracteres Unicode para que coincidan con cualquier otro tipo de texto.

La siguiente lista explica los meta-caracteres de las expresiones regulares que se usan para formar los patrones.

`.

Encuentra cualquier caracter individual (exceptuando saltos de línea)

[abcABC]

Encuentra cualquiera de los caracteres eliminar entre corchetes

[^abcABC]

Encuentra cualquiera de los caracteres que no esté entre corchetes.

[a-z]

Encuentra cualquier caracter que esté en el rango

[^a-z]

Encuentra cualquier caracter que no esté en el rango

sun|sun|moon

Encuentra cualquiera de las cadenas de la lista

^

Inicio de una línea

$

Fin de línea

Todas las funcionalidades de las expresiones regulares se pueden implementar con grep. Se puede observar que en el ejemplo anterior, la palabra no está rodeada de comillas dobles. Para evitar que el shell interprete el meta-carácter en sí, se recomienda que el patrón más complejo esté entre comillas dobles (" "). Para fines prácticos, se utilizarán comillas dobles al implementar expresiones regulares, mientras que las otras comillas mantienen su funcionalidad normal, tal como se discutió en lecciones anteriores.

Los siguientes ejemplos enfatizan la funcionalidad de las expresiones regulares. Se necesitarán datos dentro del fichero, por lo tanto, el siguiente conjunto de comandos sólo agrega diferentes cadenas de texto al fichero text.txt.

$ echo "aaabbb1" > text.txt
$ echo "abab2" >> text.txt
$ echo "noone2" >> text.txt
$ echo "class1" >> text.txt
$ echo "alien2" >> text.txt
$ cat text.txt
aaabbb1
abab2
noone2
class1
alien2

El primer ejemplo es una combinación de búsqueda a través del fichero sin y con expresiones regulares. Para entender completamente las expresiones regulares es muy importante mostrar la diferencia. El primer comando busca la cadena exacta, en cualquier parte de la línea, mientras que el segundo busca conjuntos de caracteres que contengan cualquiera de los caracteres entre corchetes, por lo que los resultados de los comandos son diferentes.

$ grep "ab" text.txt
aaabbb1
abab2
$ grep "[ab]" text.txt
aaabbb1
abab2
class1
alien2

El segundo grupo de ejemplos muestran el uso de los metacaracteres inici y fin de línea. Es muy importante especificar la necesidad de colocar los 2 caracteres en el lugar correcto de la expresión. Cuando se especifica el comienzo de la línea, el metacaracter debe estar antes de la expresión, mientras que cuando se especifica el final de la línea, el metacaracter debe estar después de la expresión.

$ grep "^a" text.txt
aaabbb1
abab2
alien2
$ grep "2$" text.txt
abab2
noone2
alien2

Además de los metacaracteres explicados anteriormente, las expresiones regulares también incluyen metacaracteres que permiten la multiplicación del patrón previamente especificado:

*

Cero o más del patrón precedente

+

Uno o más del patrón precedente

?

Cero o uno del patrón precedente

Para los metacaracteres, el siguiente comando busca una cadena que contenga ab, un solo carácter y uno o más de los caracteres encontrados previamente. El resultado muestra que grep encontró la cadena aaabbb1, que coincide con abbb y abab2. Dado que el carácter + es un carácter de expresión regular extendida, necesitamos pasar la opción -E al comando grep.

$ grep -E "ab.+" text.txt
aaabbb1
abab2

La mayoría de los metacaracteres son muy fáciles de entender, pero pueden volverse complicados cuando se usan por primera vez. Los ejemplos anteriores representan una pequeña parte de la funcionalidad de las expresiones regulares. Intente utilizar todos los metacaracteres de la tabla anterior para entender sus funcionalidades.

Ejercicios guiados

Usando grep y el fichero /usr/share/hunspell/en_US.dic, busque las líneas que coincidan con los siguientes criterios:

  1. Todas las líneas que contengan la palabra cat en cualquier parte de la línea

  2. Todas las líneas que no contengan ninguno de los siguientes caracteres: sawgtfixkgts.

  3. Todas las líneas que comiencen con 3 letras cualquieras y la palabra dig.

  4. Todas las líneas que terminen al menos en una e.

  5. Todas las líneas que contengan una de las siguientes palabras: org, kay o tuna.

  6. Cantidad de líneas que comiencen con una o ninguna c seguida de la cadena ati.

Ejercicios exploratorios

  1. Construya una expresión regular que encuentre las palabras que coincidan con las de la línea “Include” y que no coincidan con las de la línea “Exclude”:

    • Include: pot, spot, apot

      Exclude: potic, spots, potatoe

    • Include: arp99, apple, zipper

      Exclude: zoo, arive, attack

    • Include: arcane, capper, zoology

      Exclude: air, coper, zoloc

    • Include: 0th/pt, 3th/tc, 9th/pt

      Exclude: 0/nm, 3/nm, 9/nm

    • Include: Hawaii, Dario, Ramiro

      Exclude: hawaii, Ian, Alice

  2. ¿Qué otro comando puede utilizarse para hacer búsqueas en ficheros? ¿Qué otras funcionalidades incluye?

  3. Utilizando lo aprendido en lecciones anteriores, utilice uno de los ejemplos e intente buscar un patrón específico dentro de la salida del comando con la ayuda de grep.

Resumen

En esta lección, usted aprendió:

  • Metacaracteres de expresiones regulares

  • ¿Cómo crear patrones utilizando expresiones regulares?

  • ¿Cómo hacer búsquedas en ficheros?

Comandos utilizados en los ejercicios:

grep

Busca caracteres o cadenas dentro de un fichero

Respuestas a los ejercicios guiados

Usando grep y el fichero /usr/share/hunspell/en_US.dic, busque las líneas que coincidan con los siguientes criterios:

  1. Todas las líneas que contengan la palabra cat en cualquier parte de la línea

    $ grep "cat" /usr/share/hunspell/en_US.dic
    Alcatraz/M
    Decatur/M
    Hecate/M
    ...
  2. Todas las líneas que no contengan ninguno de los siguientes caracteres: sawgtfixkgts.

    $ grep -v "[sawgtfixk]" /usr/share/hunspell/en_US.dic
    49269
    0/nm
    1/n1
    2/nm
    2nd/p
    3/nm
    3rd/p
    4/nm
    5/nm
    6/nm
    7/nm
    8/nm
    ...
  3. Todas las líneas que comiencen con 3 letras cualquieras y la palabra dig.

    $ grep "^...dig" /usr/share/hunspell/en_US.dic
    cardigan/SM
    condign
    predigest/GDS
    ...
  4. Todas las líneas que terminen al menos en una e.

    $ grep -E "e+$" /usr/share/hunspell/en_US.dic
    Anglicize
    Anglophobe
    Anthropocene
    ...
  5. Todas las líneas que contengan una de las siguientes palabras: org, kay o tuna.

    $ grep -E "org|kay|tuna" /usr/share/hunspell/en_US.dic
    Borg/SM
    George/MS
    Tokay/M
    fortunate/UY
    ...
  6. Cantidad de líneas que comiencen con una o ninguna c seguida de la cadena ati.

    $ grep -cE "^c?ati" /usr/share/hunspell/en_US.dic
    3

Respuestas a los ejercicios exploratorios

  1. Construya una expresión regular que encuentre las palabras que coincidan con las de la línea “Include” y que no coincidan con las de la línea “Exclude”:

    • Include: pot, spot, apot

      Exclude: potic, spots, potatoe

      Respuesta: pot$

    • Include: arp99, apple, zipper

      Exclude: zoo, arive, attack

      Respuesta: p+

    • Include: arcane, capper, zoology

      Exclude: air, coper, zoloc

      Respuesta: arc|cap|zoo

    • Include: 0th/pt, 3th/tc, 9th/pt

      Exclude: 0/nm, 3/nm, 9/nm

      Respuesta: [0-9]th.+

    • Include: Hawaii, Dario, Ramiro

      Exclude: hawaii, Ian, Alice

      Respuesta: ^[A-Z]a.*i+

  2. ¿Qué otro comando puede utilizarse para hacer búsqueas en ficheros? ¿Qué otras funcionalidades incluye?

    El comando sed puede buscar y reemplazar caracteres o conjuntos de caracteres dentro de un fichero.

  3. Pensando en la lección anterior, use uno de los ejemplos e intente buscar un patrón específico dentro de la salida del comando, con la ayuda de grep.

    Tomé una de las respuestas de los Ejercicios exploratorios y busqué la línea que ha leído, escrito y ejecutado como permisos de grupo. Su respuesta puede ser diferente, dependiendo del comando que eligió y el patrón que creó.

    $ cat contents.txt | tr -s " " | grep "^....rwx"

    Este ejercicio es para mostrarle que grep también puede recibir información de diferentes comandos y puede ayudarlo a filtrar la información generada.

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

Siguiente lección

3.3 Crear un script a partir de una serie de comandos (3.3 Lección 1)

Leer la próxima lección

© 2020 Linux Professional Insitute Inc. Todos los derechos reservados. Visite el sitio web de Learning Materials: https://asir.sudo.es/docnux/learning.lpi.org
Este trabajo está registrado bajo la Licencia Internacional Creative Commons Attribution-NonCommercial-NoDerivatives 4.0

LPI es una organización sin fines de lucro.

Linux Professional Institute (LPI) es la organización global de certificación y apoyo académico para profesionales de código abierto. Con más de 200,000 titulares de certificación, es el primer y más grande organismo de certificación no comercial del mundo para Linux y Open Source. LPI cuenta con profesionales certificados en más de 180 países, realiza exámenes en varios idiomas y tiene cientos de socios de capacitación.

Nuestro propósito es hacer que las oportunidades económicas y creativas estén disponibles para todos, haciendo que el conocimiento de código abierto y la certificación sea universalmente accesible.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Contáctenos
  • Política de privacidad y cookies

¿Detecta un error o desea ayudar a mejorar esta página? Por favor háznoslo saber.

© Copyright 1999-2020 The Linux Professional Institute Inc. Todos los derechos reservados.