Lathack

Comandos de filtro en Linux

Comandos de filtro en Linux

Introducción

A continuación estaremos explicando el uso y función de comandos de filtro en Linux . Los mismos, son usados como herramienta para procesar el texto frente al flujo de datos de la entrada estándar. También, son utilizados con pipes para la concatenación con otros comandos, o bien, porque el resultado es útil para colocarlo en un archivo redireccionando la salida estándar.

Comando cat

Este es uno de los comandos de filtro en linux más utilizados. Su función es pasar el contenido de un archivo a la salida estándar (STDOUT) cuyo resultado será mostrar en pantalla el contenido de un archivo.

Opciones:

-s quita las líneas en blanco repetidas

-A muestra los caracteres no imprimibles ($: nueva línea, ^I: tab)

# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

(….)

# cat -A /etc/passwd

root:x:0:0:root:/root:/bin/bash$

daemon:x:1:1:daemon:/usr/sbin:/bin/sh$

bin:x:2:2:bin:/bin:/bin/sh$

(…)

Redireccionar la salida de un archivo a otro:

# cat /etc/passwd > otro.txt

Comando Tac

El comando tac pasa el contenido de un archivo a la salida estándar (STDOUT) de manera invertida (a diferencia de cat), el resultado será mostrar en pantalla el contenido de un archivo comenzando por el final. Veamos la siguiente comparación:

# cat test.txt

uno

dos

tres

# tac test.txt

tres

dos

uno

Comando Cut

El comando cut permite separar en secciones el contenido de un archivo o el contenido recibido por STDIN.

Opciones:

-d Define un delimitador, para separar en campos (el predeterminado es TAB)

-c Cantidad de caracteres

-f Campo o campos a mostrar

Mostrar los primeros 8 caracteres por línea:

# cut -c1-8 /etc/passwd

root:x:0

daemon:x

bin:x:2:

(…)

Muestra los primeros 8 caracteres y luego del 20 al 25:

# cut -c1-8,20-25 /etc/passwd

root:x:0ot:/bi

daemon:x:/usr/

bin:x:2:/bin/s

(…)

Toma como delimitador el signo “ : ” y se muestra la primer columna:

# cut -d»:» -f1 /etc/passwd

root

daemon

bin

(…)

Toma como delimitador el signo “ : ” y se muestra la primer columna:

# cut -d»:» -f1 /etc/passwd

root

daemon

bin

(…)

Toma como delimitador el signo “ : ” mostrando la primer y la sexta columna:

# cut -d»:» -f1,6 /etc/passwd

root:/root

daemon:/usr/sbin

bin:/bin

sys:/dev

sync:/bin

(…)

Comando Head

El comando head nos permite mostrar las primeras líneas de un archivo. De manera predeterminada mostrará las primeras 10 líneas.

Opciones:

-n [numero] Muestra el número de líneas especificado (anteponiendo un signo “ ”, muestra todo excepto esa cantidad de líneas)

-c [número] Muestra el número de caracteres especificado (número seguido de k muestra en kilobytes)

Muestra los 6 primeros caracteres de la primer fila:

# head -c6 /etc/passwd

root:x

Muestra las primeras “n” filas, en lugar de las primeras 10:

# head -n 3 /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

Comando tail

El comando tail nos permite mostrar las últimas líneas de un archivo. De manera predeterminada mostrará las últimas 10 líneas.

Opciones:

-n [numero] Muestra el número de líneas especificado (anteponiendo un signo “ + ”, muestra comenzando en la línea especificada hasta el final)

-c [número] Muestra el número de caracteres especificado (número seguido de k muestra en kilobytes)

-f Captura el archivo y muestra la salida mientras se va modificando

# tail test.txt

Uno

Dos

Tres

Cuatro

Cinco

Seis

Siete

Ocho

Nueve

Diez

# tail –n 1 test.txt

Diez

Comando nl

Dentro de los comandos de filtro en linux, nl nos hace «más facil» la legibilidad de un texto. Su función consiste en enumerar las líneas de un archivo con diferentes formatos. El mismo puede tener definidas secciones para poder enumerarlas. Es decir :

  • Con “ \:\:\:se define la sección encabezado.
  • Con “ \:\: ” el cuerpo y con “ \: ” el pie.

Opciones:

-h [opción] Formato encabezado (header)

-f [opción] Formato pie (footer)

-b [opción] Formato cuerpo (body)

Los posibles formatos son:

a Numera todas las líneas

t Numera las que no esten vacias

n No las numera

# nl /etc/passwd

1 root:x:0:0:root:/root:/bin/bash

2 daemon:x:1:1:daemon:/usr/sbin:/bin/sh

3 bin:x:2:2:bin:/bin:/bin/sh

(…)

# cat archivo.txt

\:\:\:

encabezado

\:\:

cuerpo

line1

line2

line3

\:

pie

\:\:\:

encabezado

\:\:

cuerpo

line1

line2

line3

\:

Pie

Enumera todas las líneas incluyendo el encabezado:

# nl -h a archivo.txt

1 header

2 line1

3 line2

4 line3

footer

1 header

2 line1

3 line2

4 line3

Footer

Enumera los encabezados, pero no las líneas del cuerpo:

# nl -b n -h a archivo.txt

1 header

line1

line2

line3

footer

1 header

line1

line2

line3

footer

Enumera todas las líneas incluyendo el pie:

# nl -f a nl

header

1 line1

2 line2

3 line3

4 footer

header

1 line1

2 line2

3 line3

4 footer

Comando od

El comando od (octal dump) se utiliza para visualizar el contenido de un archivo en varios formatos (Octal, Hexadecimal, Caracteres visibles y no visibles). No es muy utilizado

# od -c /etc/passwd

0000000 r o o t : x : 0 : 0 : r o o t

Comando paste

El comando paste se utiliza para unir dos o más archivos en columnas en una única salida.

Opciones:

-d [delimitador] Separa las columnas con el delimitador definido. El predeterminado es tab

-s El contenido del archivo en una única línea. Si son más de un archivo separará por línea cada uno.

# cat file1

Casa

Et

Telefono

# cat file2

Telefono

Casa

Telefono

Unir ambos archivos:

# paste file1 file2

Casa Telefono

Et Casa

Telefono Telefono

Une ambos archivos separando el contenido por una arroba:

# paste -d’@’ file1 file2

Casa@Telefono

Et@Casa

Telefono@Telefono

Une ambos archivos, pero con una única línea:

# paste -s file1 file2

Casa Et Telefono

Telefono Casa Telefono

Comando Sort

El comando sort permite ordenar el contenido de un archivo en varias formas.

Opciones:

-f Ignora la diferencia entre mayúsculas y minúsculas

-r Ordena de manera inversa

-k [columna] Define columna para ordenar

-M Ordena por mes (sólo inglés)

-n Ordena de manera numérica

-d Toma letras, números y espacios en blanco

# sort /etc/passwd

avahi:x:109:122:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false

backup:x:34:34:backup:/var/backups:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

clamav:x:111:124::/var/lib/clamav:/bin/false

(…)

# sort -r /etc/passwd

www-data:x:33:33:www-data:/var/www:/bin/sh

vde2-net:x:107:118::/var/run/vde2:/bin/false

uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh

$ ls -la |sort -n -k 5

-rw-rw-r– 1 keny keny 2408172 Jun 22 22:49 wikimedia 2.pdf

-rw-r–r– 1 user user 2710249 May 26 13:48 ibmsamqt-3.2.3.1-2.i386.rpm

-rw-rw-r– 1 keny keny 3360412 Jun 10 00:38 vlc-0.7.0-1.i386.rpm

(…)

Comando split

El comando split divide un archivo en varios, ya sea por cantidad de líneas o un tamaño determinado.

Sintaxis:

split (opciones) [archivodeentrada] {archivodesalida}

Opciones:

-l [número] Cantidad de líneas para cortar (Se puede omitir la “l” Ej: usar -3, para 3 líneas)

-b [número] Cantidad de bytes para cortar

Creará varios archivos de 10 líneas. El resultado se guardará en passwd-cortado XX donde XX serán letras incrementándose.

# split -l 10 /etc/passwd passwd-cortado

Comando uniq

El comando uniq elimina líneas duplicadas en un archivo.

Opciones:

-c Muestra la cantidad de repeticiones

# cat ejemplo.txt

Pedro

Mario

Lucas

Lucas

Marina

Pedrito

Hola

Hola

# uniq ejemplo.txt

Pedro

Mario

Lucas

Marina

Pedrito

Hola

Muestra la cantidad de repeticiones:

# uniq -c ejemplo.txt

1 Pedro

1 Mario

2 Lucas

1 Marina

2 Hola

1 Pedrito

Muestra sólo lo que se repite:

# uniq -d Lucas

Lucas

Hola

Muestra lo que nunca se repite:

# uniq -u Lucas

Juan

Pedro

Mario

Marina

Pedrito

Comando wc

El comando wc se utiliza para contar líneas, caracteres y palabras.

Opciones:

-w Cantidad de palabras

-l Cantidad de líneas

-c Cantidad de caracteres

Si no se especifican las opciones, este la mostrará cantidad de líneas, palabras y caracteres.

# wc /etc/passwd

43 64 2099 /etc/passwd

Cantidad de líneas:

# wc -l /etc/passwd

43 /etc/passwd

Cantidad de palabras:

# wc -w /etc/passwd

64 /etc/passwd

Cantidad de caracteres:

# wc -c /etc/passwd

2099 /etc/passwd

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

20 + 19 =

Lathack
Scroll al inicio