Búsqueda de patrones de cuerdas

Búsqueda de patrones de cuerdas

Soy nuevo en Linux. Quiero ser colocado como administrador del sistema. Asistí a una entrevista en Amazon. Me pidieron que escribiera un cmd para encontrar la cadena que comienza con 's' y termina con 'a' en un archivo. Sé que tenemos que usar grep, pero no sé las cosas reales. Sumado a esto, también preguntaron cómo funciona grep. ¿Alguien puede dar una respuesta breve para esto?

gracias de antemano

Respuesta1

grep busca en los ARCHIVOS de entrada con nombre (o la entrada estándar si no se nombra ningún archivo, o si se proporciona un solo guión menos (-) como nombre de archivo) para líneas que contengan una coincidencia con el PATRÓN dado. Por defecto, grep imprime las líneas coincidentes.

Comandos grep

Grep y sus opciones

-v  =   non-matching lines
-c  =   count of matching  lines
-i  =   Ignore  case
-r  =   Read all  files  under  each  directory
-l  =   list the file which contain the searching keyword
 ^      =       Search the Starting word of a file
.$      =       Search the end word of a file
^$      =       Search the empty lines in a file

Encuentre todas las líneas que coincidan con una palabra clave específica en un archivo.

grep sysadmin /etc/passwd

Pantalla con números

grep -nv nologin /etc/passwd

Para evitar la palabra clave y buscar otras

grep -v sysadmin /etc/passwd

Para contar cuántas líneas coinciden con las palabras clave que estamos buscando

grep -c sysadmin /etc/passwd

Para buscar texto ignorando mayúsculas y minúsculas

grep -i sysadmin /etc/passwd

Busque en todos los archivos /homey sus subdirectorios texto que coincida con un patrón específico e imprima las líneas coincidentes

grep -ri sysadmin /home/

Busque en todos los archivos /homey sus subdirectorios texto que coincida con un patrón específico y enumere los archivos que lo contienen

grep -ril sysadmin /home/

Para buscar una IP particular mencionada entre muchas IP. Esto -Fgarantiza que .coincidan con caracteres literales .; sin él, coincidirían con cualquier carácter.

grep -F "192.168.1.10" /var/log/syslog

Para buscar una línea que comience conFeb

grep ^Feb /var/log/syslog

Para buscar una línea que termine conqueue

grep queue$ /var/log/mail.log

Para contar las líneas vacías en un archivo (las líneas que contengan espacios en blanco no se contarán)

grep -c ^$ /var/log/mail.log

Busque una cadena dentro de todos los archivos de un directorio y sus subdirectorios

grep -r "root" .

Respuesta2

Pruebe este comando GNU grep con -Pla opción (Perl-regex),

 grep -oP '\bs.*a\b' file

Explicación:

\b    # Matches the word boundary(ie, match between a word character and a non word character)
s     # Starting character would be a literal s.
.*    # Matches any character zero or more times.
a     # Matches a literal a.
\b    # Matches the word boundary(ie, match between a word character and a non word character)

información relacionada