Comandos básicos de Linux con los filtros de texto

En algunos de los comandos que he ejecutado en capítulos anteriores he utilizado tuberías con comandos como grepsort para obtener una vista modificada del comando original.

Búsqueda de cadenas de texto con el comando grep

Utilizaremos comando grep para encontrar un texto dentro de un fichero o en la salida de un comando.

Imaginemos que tenemos un fichero que contiene algunos nombres:

# cat nombres.txt 
David 
Silvia 
Javi 
Alberto 
#

Ahora queremos conocer si ese fichero contiene «Javi»:

# grep Javi nombres.txt 
Javi 
#

Si miramos el man del comando grep, observaremos que tiene unos cuantos parámetros. Yo utilizo mucho «-i» para que no tenga en cuenta las mayúsculas. El comando anterior habría funcionado igual si hubiese escrito «grep -i javi nombres.txt» o si hubiese escrito «grep -i JaV».

Con el parámetro «-v» excluimos un resultado. Es decir, que muestro todos los resultados excepto el filtrado:

# grep -v Javi nombres.txt 
David 
Silvia 
Alberto 
#

Tal y como comentaba al principio, también podemos user grep como una tubería:

[[email protected] ~]# ls -la |grep cfg
-rw-------. 1 root root 6913 May 1 21:10 anaconda-ks.cfg
-rw-------. 1 root root 6580 May 1 21:10 original-ks.cfg
[[email protected] ~]#

Uno de los filtros que utilizo mucho es este:

grep -v "^$" archivo.txt > archivo_nuevo.txt

Consigo eliminar las líneas en blanco y redirigir el resultado a un archivo de texto.

Si queremos mostrar en qué línea se encuentra la palabra que estamos buscando, utilizaremos el parámetro «-n» con grep.

grep -n palabra fichero.txt

[[email protected] ~]# grep -n Logins rename_tables.sh
75:wp_wfLogins
[[email protected] ~]#

Si queremos ver la línea encontrada con grep y las siguientes cuatro, utilizaremos el parámetro «-A 4» (after). Ejemplo:

[[email protected] ~]# multipath -ll |grep mpathbj  -A 4
mpathbj (360002ac0000000000000009f000206ca) dm-37 3PARdata,VV
size=900G features='1 queue_if_no_path' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 1:0:6:0 sdl  8:176  active ready running
  `- 2:0:6:0 sdw  65:96  active ready running
[[email protected] ~]#

Con «-B 4» (before) veríamos las cuatro líneas anteriores.

Ordenar cadenas de texto con el comando sort de Linux

Para ordenar alfabéticamente un fichero de texto o el resultado de un comando, utilizaremos «sort».

# sort -d nombres.txt 
Alberto 
David 
Javi 
Silvia 
#

También podemos ordenar por el número de columna. Por ejemplo, para ordenar los cinco ficheros por su tamaño, ejecutaremos:

[[email protected] ~]# ls -la |sort -rnk5 |head -5
-rw-------. 1 root root 11213 Oct 11 06:33 .bash_history
-rw-------. 1 root root 6913 May 1 21:10 anaconda-ks.cfg
-rw-------. 1 root root 6580 May 1 21:10 original-ks.cfg
-rw------- 1 root root 1024 Sep 20 07:06 .rnd
dr-xr-xr-x. 18 root root 255 Sep 19 16:09 ..
[[email protected] ~]#

La columna cinco es la marcada en negrita.

Eliminar las líneas repetidas de un texto con el comando uniq de Linux

Si solamente nos interesa obtener los resultados diferentes de un texto o de la salida de un comando, utilizaremos el comando «uniq».

Como vemos «David» está repetido dos veces:

# cat nombres.txt 
David 
Silvia 
Javi 
Alberto 
David 
#
# cat nombres.txt |sort -d |uniq -c 
1 Alberto 
2 David 
1 Javi 
1 Silvia 
#

Contador de líneas, palabras y caracteres con el comando wc de Linux

Para esta función, utilizaremos el comando «wc».

# wc -l nombres.txt
 4 nombres.txt
#

Con «wc -w» cuenta el número de palabras de un fichero de texto.

Para contar el número de ficheros que hay en un directorio, haremos:

[[email protected] ~]# ls -la |wc -l
16
[[email protected] ~]#

Cortar caracteres de una cadena de texto con el comando cut de Linux

A veces nos interesan obtener sólo algunos de los valores que devuelve un comando, bien para mejorar la vista solamente con los campos que nos interesan o porque estemos utilizando dichos valores en algún script. El comando «cut» es idóneo para esta función.

# cat campos.txt 
campo1:campo2:campo3:campo4 
c1v1 :c1v2 :c1v3 :c1v4 
c2v1 :c2v2 :c2v3 :c2v4 
#
# cut -d ':' -f 2,4 campos.txt 
campo2:campo4 
c1v2 :c1v4 
c2v2 :c2v4 
#

Para hacer esto, personalmente uso más el comando «awk». Se haría de la siguiente manera: awk -f «:» ‘{print $2″ «$4}’, pero son manías mías 😉

Ahora tenemos otro fichero con el abecedario y queremos ver las letras de la 4 a la 14:

[[email protected] ~]$ cut -c 4-14 abecedario.txt defghijklmn 
[[email protected] ~]$

Sustituir una cadena de texto por otra con el comando sed en Linux

El comando «sed» se encarga de buscar un texto dentro de un fichero o en la salida de un comando y sustituirlo por otro.

sed ‘s/cadena_original/cadena_nueva/’ NombreFichero

Ejemplo:

# sed 's/Silvia/Laura/' nombres.txt 
David 
Laura 
Javi 
Alberto 
David 
#

Ver las primeras líneas de un texto en Linux con el comando head

Utilizaremos el comando «head».

ls -la |head -6
[[email protected] ~]# ls -la |head -6
total 220
dr-xr-x---.  8 root root   4096 Jan 26 06:47 .
dr-xr-xr-x. 22 root root   4096 Oct 15 10:47 ..
drwxr-xr-x   5 root root     66 Sep 11 17:18 amzn-drivers
drwxr-xr-x   2 root root     39 Oct  2 21:31 .aws
-rw-------.  1 root root  18987 Jan 25 21:32 .bash_history
[[email protected] ~]#

El comando «tail», hacelo mismo pero muestra las últimas líneas.

Comparar el contenido de dos ficheros de texto en Linux con diff

Esto lo utilizo mucho para saber si han habido diferencias del mismo fichero en diferentes fechas o el mismo fichero de diferentes servidores.

# cat nombres.txt
David
Silvia
Javi
Alberto
Marcos
#
# cat nombres2.txt
David
Silvia
Javi
Alberto
Pepe
diff nombres.txt nombres2.txt
5c5
< Marcos

> Pepe
#

Ha detectado que la línea número 5 es diferente.

No olvides visitar la guía de Linux.

Te puede interesar

¿Te ha gustado? ¡Compártelo!

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

Portátiles

Rebajas
Lenovo S145-15AST - Ordenador portátil 15.6" FullHD (AMD A9-9425, 8GB de RAM, 512GB SSD,...
  • Pantalla de 15,6"fullhd 1920x1080 pixeles
  • Procesador amd a9-9425, dualcore 3.1ghz hasta 3.7ghz, 1m
  • Memoria ram de 8gddr4, 2133mhz
Lenovo S145-15AST - Ordenador portátil 15.6" FullHD (AMD A6-9225, 8GB de RAM, 256GB SSD,...
  • Pantalla de 15,6"FullHD 1920x1080 pixeles
  • Procesador AMD A6, DualCore 3.1GHz hasta 3.7GHz, 1MB
  • Memoria RAM de 8GB DDR4, 2133Mhz
Rebajas
Acer A315-54K - Ordenador portátil de 15.6" HD (Intel Core i3-7020U, 8GB de RAM, 256GB...
  • Pantalla de 15.6", HD (1366x768 pixels)
  • Procesador intel core i3-7020u (2 núcleos, 3MB cache, hasta 2.3 GHz)
  • Memoria RAM de 8GB DDR4, 2133 MHz
Lenovo S145-15AST - Ordenador portátil 15.6" FullHD (AMD A6-9225, 8GB de RAM, 256 SSD,...
  • Pantalla de 15,6"fullhd 1920x1080 pixeles
  • Procesador amd a6-9225, dualcore 2.6ghz hasta 3ghz, 1mb
  • Memoria ram de 8gb ddr4, 2133mhz

Monitores PC

Rebajas
HP 22w - Monitor 21.5" (Full HD, 1920 x 1080 pixeles, tiempo de respuesta de 5 ms, 1 x...
  • Regálale a tu escritorio un toque de elegancia
  • Esta pantalla IPS de 53.61 cm (21,5 pulgadas) en diagonal dispone de 178 ángulos de visualización para ofrecer una experiencia de entretenimiento...
  • Con los puertos VGA y HDMI, esta pantalla hace que conectar tu ordenador portátil o pc de sobremesa sea una tarea sencilla y fluida
Rebajas
Samsung LC24F390FHU - Monitor para PC Desktop de 24'' (1920 x 1080 pixeles, Full HD, HD...
  • Pantalla de 24 pulgadas con una resolución de 1920 x 1080 píxeles
  • Brillo de pantalla: 250 cd / m²
  • Interfaz de montaje VESA 75 x 75 mm
Rebajas
BenQ GW2470HL - Monitor para PC Desktop de 23.8" Full HD (1920x1080, VA, 16:9, 2x HDMI,...
  • Los niveles ajustables de baja luz azul eliminan la luz azul peligrosa y mantienen la luz beneficiosa para una comodidad de visualización prolongada
  • Disfruta de gráficos nítidos con una resolución de 1920 x 1080
  • Minimiza las distracciones y crea una configuración de varios paneles con monitores de bisel estrecho

Discos Externos

Toshiba Canvio Basics, Disco Duro, 1, Negro
  • Disco duro externo de 2.5"
  • Acabado mate
  • Puerto superspeed usb 3.0
WD Elements - Disco duro externo portátil de 2 TB con USB 3.0, color negro
  • Capacidad de almacenamiento de 2 TB
  • Conexión USB 3.0 y compatibilidad con versiones anteriores de dispositivos USB 2.4
  • Compatibilidad: con formato NTFS para Windows 10, Windows 8.1 o Windows 7. Puede requerir reformatear para otros sistemas operativos. El nivel de...
WD Elements - Disco duro externo portátil de 3 TB con USB 3.0, color negro
  • Conexión USB 3.0 y compatibilidad con versiones anteriores de dispositivos USB 2.5
  • Diseñado para ordenadores con sistema operativo Windows, formatable para Mac

También te puede gustar

Tutorial de fail2ban

Tabla de contenidos1 ¿Qué es fail2ban?2 Instalar fail2ban en Linux Centos 73 Configuración de fail2ban3.1 Protección de servicios concretos4 Logs

Leer más »

Deja un comentario

About Author