miércoles, 22 de agosto de 2018

Procesando Texto en GNU/Linux



En este post, vamos a tratar los comandos mas utilizados para procesar texto en GNU/Linux

cat

Dicho comando pasa el contenido de un archivo a STDOUT, lo cual nos va a permitir visualizar el contenido del archivo que le pasemos como argumento

Las opciones son:

-s    quita las líneas en blanco repetidas
-A    muestra los caracteres no imprimibles ($: nueva línea, ^I: tab)

Ejemplos:

# 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$



Podemos redireccionar la salida a un archivo diferente de la siguiente forma:

# cat /etc/passwd > passwd.bkp

cut

Permite separar en secciones el contenido de un archivo o lo que le pasemos por STDIN

Las opciones son:

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

-c    Cantidad de caracteres

-f    Campo o campos a mostrar

Por ejemplo, si quiero mostrar los primeros 8 caracteres por línea de /etc/passwd
# cut -c1-8 /etc/passwd
root:x:0
daemon:x
bin:x:2:



Veamos los primeros 8 caracteres y del 20 al 25
# cut -c1-8,20-25 /etc/passwd
root:x:0ot:/bi
daemon:x:/usr/
bin:x:2:/bin/s


Usamos ";" como delimitador y mostramos la primer columna

# cut -d":" -f1 /etc/passwd
root
daemon
bin


Ahora usamos el signo “:” y como en el ejemplo anterior, la primer columna
# cut -d":" -f1 /etc/passwd
root
daemon
bin

Usamos el signo “:”  y mostramos la primer y la sexta columna

#cut -d":" -f1,6 /etc/passwd
root:/root
daemon:/usr/sbin
bin:/bin
sys:/dev
sync:/bin

Head
Dicho comando nos permite ver las 10 primeras lineas

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)

Mostramos los  6 primeros caracteres

# head -c6  /etc/passwd
root:x



less

Nos permite visualizar archivos


# less /var/log/messages


sort

Nos permite ordenar el contenido de un archivo de diferentes maneras:



-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

Por Ejemplo

# 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


[juan@juan ~]$ ls -la |sort  -n -k 5
-rw-rw-r-- 1 juan juan 2408172 Jun 22 22:49 linux.pdf
-rw-r--r--   1 juan juan  2710249 May 26 13:48 ibmsamqt-3.2.3.1-2.i386.rpm
-rw-rw-r-- 1 juan juan  3360412 Jun 10 00:38 vlc-0.7.0-1.i386.rpm


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-cortadoXX donde XX serán letras incrementándose.

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


tac

El comando tac pasa el contenido de un archivo a la salida estándar (STDOUT) de manera invertida, el resultado será mostrar en pantalla el contenido de un archivo comenzando por el final.


[juan@juan]# cat tac
uno
dos
tres


[juan@juan]# tac tac
tres
dos
uno

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

[root@juan ~]# tail -n 1 prueba.txt
tres

Tr

El comando tr traduce cadenas de texto tomadas por STDIN y devolviendo el resultado por STDOUT

Sintaxis

tr string1 string2

Opciones:

-d     Borra los caracteres en el string1 de la salida.
-s     Borra los caracteres repetidos
-c     Se usa para completar el string1 o todos los caracteres que no están.

Parámetros

a-z    todos los caracteres de la a la z
\\     un caracter \
\nnn     un caracter ascii con el valor octal nnn
Caracteres de control →

\a bell
\b backspace
\f form feed
\n newline
\r carriage return
\t horizontal tab
\v vertical tab

Convierte las minúsculas en mayúsculas

[juan@juan]# cat file1 | tr a-z A-Z
1 JACK WALLEN
2 JESSICA WALLEN
3 JOHNNY WALLEN
4 JERI WALLEN



También convierte las minúsculas en mayúsculas

[juan@juan]$  cat file1 | tr '[:lower:]' '[:upper:]'
1 JACK WALLEN
2 JESSICA WALLEN
3 JOHNNY WALLEN
4 JERI WALLEN


[juan@juan]$ cat prueba.txt
1 Jack     Wallen
2 Jessica    Wallen
3 Johnny     Wallen
4 Jeri     Wallen


Remueve los espacios repetidos

[juan@juan]$ cat file1 | tr -s '[:blank:]'
1 Jack Wallen
2 Jessica Wallen
3 Johnny Wallen aa
4 Jeri Wallen
[/code]

[juan@juan]$ cat file1
1        Jack Wallen
2 Jessica    Wallen
3 Johnny        Wallen  aa
4 Jeri Wall     en

Quita todos los caracteres no imprimibles, excepto el de nueva línea “enter” (newline)
[juan@juan]$ cat file1 | tr -dc '[:print:]\n'
1 Jack Wallen
2 Jessica    Wallen
3 Johnny Wallen  aa
4 Jeri Wallen

uniq

El comando uniq elimina líneas duplicadas en un archivo

Opciones

-c    Muestra la cantidad de repeticiones

[juan@juan]]$ cat rino.txt
Juan
Pedro
Maria
Rino
Rino
Marina
Pedrito
Hola
Hola

[juan@juan]$ uniq rino.txt
Juan
Pedro
Maria
Rino
Marina
Pedrito
Hola

Muestra la cantidad de repeticiones

[juan@juan]# uniq -c rino.txt
1 Juan
1 Pedro
1 Maria
2 Rino
1 Marina
1 Pedrito
2 Hola

Muestra sólo lo que se repite
[juan@juan]# uniq -d rino
Rino
Hola

Muestra lo que no se repite

[juan@juan]# uniq -u rino
Juan
Pedro
Maria
Marina
Pedrito

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 opciones 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


md5sum

El comando md5sum se usa principalmente para verificar si dos o más archivos son iguales, o para verificar si cambió su contenido. Por ejemplo:

# md5sum /etc/fstab /tmp/fstab

d58f2a9875fd3b23d59ad5a11a425250  /etc/fstab

d58f2a9875fd3b23d59ad5a11a425250  /tmp/fstab

# echo -e “\n” >> /tmp/fstab

# md5sum /etc/fstab /tmp/fstab

d58f2a9875fd3b23d59ad5a11a425250  /etc/fstab

48105cb61d48a02a7339f5b1b4b6b154  /tmp/fstab

De esta manera se puede determinar que el archivo fue modificado. No debería usarse para determinar de manera confiable la integridad de un archivo.

sha256sum

Esta herramienta es similar a md5sum pero utiliza un algoritmo más seguro, que utiliza palabras de 32 bits.

# sha256sum   /etc/fstab /tmp/fstab
6aa8d7e00da052eea6373c09c8165a6a474202816076d46ccc56d3470ced9295  /etc/fstab

bee4784df968264324aea32f856e6ab9770c1010e1532ed3c8abbfc3f98f2e09  /tmp/fstab
sha512sum


Esta herramienta tiene la misma finalidad que sha256sum pero  utsa  palabras de 64 bits.

# sha512sum   /etc/fstab /tmp/fstab

d984857a94754b09d36642fe57cbc9b5e7c5bea256dd9527fba3aeddcf174a3f62734a74fd70c9c8e4f5da362116601831f2af0eb1695e00632533a10571d77a  /etc/fstab

84142a51f09f87a67c6f9bf098a395c451f096cbf8ed8b5a24ed69dee5f5333b1b6e52cc2dea8274e2a75e1dc3dc20951a616d93d3e0a2171c8d1b03563e04fe  /tmp/fstab


Tanto sha256sum como sha512sum se usan frecuentemente para verificar la integridad de imágenes ISO descargadas de Internet.

bzcat

Este programa sirve para leer archivos comprimidos con bzip2:

# bzcat /usr/share/doc/gcc/ChangeLog.tuples.bz2

xzcat

Este programa sirve para leer archivos comprimidos con xz:

# xzcat  /usr/share/doc/gcc/ChangeLog.tuples.xz

zcat
Este programa sirve para leer archivos comprimidos con gzip:

# zcat /usr/share/doc/gcc/ChangeLog.tuples.gz


No hay comentarios:

Publicar un comentario

Bienvenidos

Que es Lynis?

Lynis es un software que se utiliza para auditar, chequear si cumple los requerimientos de seguridad, y asegurar un sistema basado en Unix...