Con cierto retraso retomo mi traspaso de apuntes del curso de LPI1 al blog. Mejor tarde que nunca. Es hora de comenzar a estudiar! En este post me entretengo con el grep y el vi.
Grep busca en los archivos indicados las líneas que contengan el texto que buscamos. Cuando encuentra una línea con el texto, la copia a la sálida estándar (por defecto) o cualquiera otro tipo de salida que hayas configurado con opciones.
grep [-modificador] patron archivo
Ejemplo:
Buscamos el string “root” en el fichero /etc/passwd
1 2 3 | <strong># grep root /etc/passwd</strong> root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin |
Buscamos el string “root” en el fichero /etc/passwd y que nos muestre el número de línea
1 2 3 | <strong># grep -n root /etc/passwd</strong> 1:root:x:0:0:root:/root:/bin/bash 12:operator:x:11:0:operator:/root:/sbin/nologin |
Buscamos en el mismo fichero cualquier línea que no incluya el string “root” y a su vez, con la pipe descartamos del primer resultado todos aquellos que tengan el string “nologin”
1 2 3 4 5 | <strong># grep -v root /etc/passwd | grep -v nologin</strong> sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt news:x:9:13:news:/etc/news: |
Nos muestra la cantidad de veces que ha encontrado un resultado válido
1 2 | <strong># grep -c root /etc/passwd</strong> 2 |
Expresiones regulares (que no reguleras
)
Buscamos las líneas que comienzen por el string root
1 2 | <strong># grep ^root /etc/passwd</strong> root:x:0:0:root:/root:/bin/bash |
Buscamos a un usuario que no tiene shell asignado
1 2 | <strong># grep :$ /etc/passwd</strong> news:x:9:13:news:/etc/news: |
Clases de carácteres
Buscamos una línea que contenga cualquiera de los carácteres f,y
1 2 3 4 5 6 | <strong># grep [yf] /etc/group</strong> sys:x:3:root,bin,adm tty:x:5: ftp:x:50: nobody:x:99: floppy:x:19: |
Buscamos una palabra que empiece por r y acabe por t y contenga dos carácteres
1 2 3 | <strong># grep '\' /etc/passwd</strong> root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin |
–color=auto es útil para resaltar las resultados encontrados
1 | <strong># grep --color=auto '\' /etc/passwd</strong> |
Expresiones regulares
. cualquier carácter
* cualquier número de apariciones
+ una o más apariciones
? de 0 a 1 aparaciones
{a,b} entre ‘a’ y ‘b’ apariciones
{a} a apariciones
{,b} 0 y b apariciones
[abc] carácter a,b,c
[a-z] carácter de la ‘a’ a la ‘z’
$ final de línea
^ inicio
Parámetros
-i case insensitive, tanto maýusculas como minúsculas
-v busca lo contrario
-n muestra el número de línea
-r recursivo
# vi texto.txt
Tiene dos modos de trabajo, comandos y insertar. Para pasar a modo insertar, tecleamos ‘i’, para volver a modo comandos, ‘Esc’. Las formas de entrar en el modo edición son:
H,J,K,L hacen de teclas de dirección
‘x’ borra letra
‘x’ + SHIFT borra letra anterior
’0′ inicio de línea
‘W’ palabra sigiuente
‘B’ palabra anterior
Borrar
d+c = caracter
d+w = palabra
d+d = linea
Copiar
y+c = caracter
y+w = palabra
y+d = linea
Pegar
d+c = caracter
d+w = palabra
d+d = linea
w, guardar.
wq guardar y salir
w! fuerza guardar
q salir
q! salir sin guardar
Modo Insertar
i carácter actual
I inicio de línea
a carácter actual
A final de línea
o abre una línea nueva antes de la actual
O abre una línea nueva después de la actual
Buscar
tecleamos / y el texto a buscar
n busca siguiente
N busca anterior
Reemplazar
Rangos / cadena_original /sustituto /flags
:%s sustituye todo el documento
Normalmente se puede añadir un número delante
:10x, :10dd, etc
Split
:split, trocea la ventana en dos partes.
:vsplit trocea verticalmente
CTRL+W+(teclas dirección) para moverse entre ventanas
Ejecutar comando y muestra output
1 | :![comando] |
Ayuda
1 | :help |
Links: