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 /home
y 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 /home
y 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 -F
garantiza 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 -P
la 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)