8 herramientas de procesos de string

37
Linux 1 Linux RHC030 Modulo 8. Herramientas de Procesos de String Relator : Cristian Leiva

Upload: cyberleon95

Post on 18-Jul-2015

412 views

Category:

Education


0 download

TRANSCRIPT

Linux 1

Linux RHC030

Modulo 8. Herramientas de Procesos de String

Relator : Cristian Leiva

2© 2007 Linux. Todos los derechos reservados.

Unidad 8 – Herramientas de Procesos de String Conteo de palabras y codificación de texto

Búsqueda de Texto: grep

Introducción a las expresiones regulares

Ordenando todo: sort y uniq

Extraer y reunir texto: cut y paste

Rastreo de diferencias: diff

Traducción de texto: tr

Revisión ortográfica: aspell

Formatear texto (fmt) y dividir archivos (split)

3© 2007 Linux. Todos los derechos reservados.

Conceptos Claves Cuando se almacena texto, los equipos transforman los caracteres en una representación numérica. Este proceso se conoce como codificación del texto.

A fin de cubrir las demandas de una variedad de idiomas, se han desarrollado diversas técnicas de codificación. Estas técnicas están representados por una variedad de conjuntos de caracteres.

La técnica de codificación más prevalente y antigua se conoce como el conjunto de caracteres ASCII, el cual sirve aún como el denominador menos común entre otras técnicas.

El comando wc cuenta el número de caracteres, palabras y líneas en un archivo. Cuando se aplica a datos estructurados, el comando wc puede convertirse en una herramienta versátil de conteo.

El comando cat tiene opciones que permiten la representación de caracteres de no impresión tal como el caracter NEWLINE.

Los comandos head y tail tienen opciones que le permiten imprimir sólo un cierto número de líneas o un cierto número de bytes de un archivo, (un byte suele correlacionarse con un caracter).

Conteo de palabras y codificación de texto

4© 2007 Linux. Todos los derechos reservados.

Codificación

Codificación de Datos– Convertir la información en valores numéricos es llamada codificación de los datos.

Codificación de Texto– Codificación ASCII simplemente toma las letras, números y comunes caracteres de puntuacion Inglés (los que se encuentran en un teclado), y los asigna a un número entero entre 0 y 255.

Unicode (UCS)– Supera las limitaciones de ASCII e ISO 8859 basado en tecnicas de codificación.

Unicode Transformation Format (UTF-8)–Balance entre la flexibilidad de Unicode, y la viabilidad de ASCII, con: longitud variable de codificación.

7© 2007 Linux. Todos los derechos reservados.

Visualización de secuencias de control Los archivos de texto de Linux (y Unix) por lo general se

adhieren a la convención de que el último caracter del archivo debe ser un avance de línea para la última línea de texto.

El comando cat indica la presencia de la presencia de tabulaciones, avances de línea y otras secuencias de control

[student@station student]$ cat -A /etc/hosts

# Do not remove the following line, or various programs$

# that require network functionality will fail.$

127.0.0.1^Ilocalhost.localdomain^Ilocalhost station.example.com $

127.0.0.1^Irha-server$

[student@station student]$ head –n2 /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

[student@station student]$

8© 2007 Linux. Todos los derechos reservados.

Comando Word Count (wc)

El comando wc cuenta el numero de caracteres, palabras y lineas.

Tomará su entrada ya sea de archivos llamados en su línea de comandos o desde su entrada estándar.

wc [-c] [-l] [-w] [filename…]

9© 2007 Linux. Todos los derechos reservados.

Búsqueda de Texto: grep Conceptos Claves

grep es un comando que imprime en pantalla líneas coincidentes con un patrón de una cadena de texto especificado.

grep suele utilizarse como filtro para reducir salida a sólo lo deseado.

grep -r buscará de modo recursivo bajo un directorio determinado.

grep -v imprime líneas NO coincidentes con una cadena o patrón de texto.

Muchas de las opciones permiten a los usuarios especificar el formato de salida de grep.

10© 2007 Linux. Todos los derechos reservados.

Búsqueda de contenido de archivo de texto grep: general regular expression parser

Herrramienta útil para la búsqueda de palabras específicas o secuencias de caracteres en el contenido de archivo de texto.

Hay en realidad tres nombres diferentes para la herramienta grep

–fgrep

•Hace una búsqueda rápida de patrones simples. Utilice este comando para localizar rápidamente patrones sin caracteres comodines, útil para buscar una palabra común.

–grep

•Búsqueda de patrones con expresiones regulares comunes.–egrep

•Búsqueda de patrones con expresiones regulares extendidas de gran alcance.

11© 2007 Linux. Todos los derechos reservados.

grep

12© 2007 Linux. Todos los derechos reservados.

Muestra todas las ocurrencias de una cadena de texto en un archivo

[student]$ cat file

This file has some words.

It also has even more words.

[student]$ grep even file

It also has even more words.

[student]$

[student]$ echo Every cat has one tail. > general

[student]$ echo No cat has nine tails. > specific

[student]$ echo Therefore, every cat has ten tails. > fallacy

[student]$ grep cat general specific fallacy

general:Every cat has one tail.

specific:No cat has nine tails.

fallacy:Therefore, every cat has ten tails.

[student]$

13© 2007 Linux. Todos los derechos reservados.

Obtención de números de línea

[student]$ fgrep -n dictionary

/usr/share/dict/words 12526:dictionary

[student]$ fgrep -nr dictionary /usr/share/dict

linux.words:12526:dictionary

words:12526:dictionary

14© 2007 Linux. Todos los derechos reservados.

Ignorar mayúsculas o minúsculas

[student]$ cat rhyme

The cat

sat on

the mat

at home.

[student]$ grep the rhyme

the mat

[student]$ grep -in the rhyme

1:The cat

3:the mat

17© 2007 Linux. Todos los derechos reservados.

Expresiones Regulares (cont.) Una expresión regular es una secuencia de:

–Caracteres literales

–Comodines

–Modificadores

–Anclas

Caracteres literales–Los caracteres literales coinciden únicamente con ellos mismos. Las letras, dígitos y la mayoría de los caracteres son ejemplos de caracteres literales (vea a continuación las excepciones).

Comodines–Los caracteres comodines coinciden con cualquier caracter. Dentro de una expresión, un punto (“.”) coincide con cualquier caracter, ya sea un espacio, una letra, un dígito, puntuación, cualquier cosa.

Modificadores–Un modificador altera el significado del caracter patrón precedente inmediato. Por ejemplo, la expresión “ab*c” coincide con cadenas de texto “ac”, “abc”, “abbc”, “abbbc” y así sucesivamente porque el asterisco (“*”) es un modificador que significa “cualquier número de (incluyendo cero)”.

Anclas–Las anclas establecen el contexto para el patrón tal como "el comienzo de una línea" o "el final de una palabra". Por ejemplo, la expresión “cat” coincidiría con cualquier ocurrencia de las tres letras mientras que “^cat” sólo coincidirían con las líneas que comienzan por “cat”.

20© 2007 Linux. Todos los derechos reservados.

Ordenando todo: sort y uniq

Conceptos clave El comando sort clasifica datos en orden alfabético.

sort -n ordena numéricamente.

sort -u clasifica y suprime duplicados.

sort -k y -t clasifica en un campo específico en datos en patrones.

21© 2007 Linux. Todos los derechos reservados.

El comando sort En su forma más simple, el comando sort clasificará

en orden alfabético líneas

[madonna@station madonna]$ cat /etc/sysconfig/mouse

FULLNAME="Generic - 2 Button Mouse (PS/2)"

MOUSETYPE="ps/2"

XEMU3="yes"

XMOUSETYPE="PS/2"

DEVICE=/dev/psaux

[madonna@station madonna]$ sort /etc/sysconfig/mouse

DEVICE=/dev/psaux

FULLNAME="Generic - 2 Button Mouse (PS/2)"

MOUSETYPE="ps/2"

XEMU3="yes"

XMOUSETYPE="PS/2"

22© 2007 Linux. Todos los derechos reservados.

Opciones para especificar el orden de clasificación

23© 2007 Linux. Todos los derechos reservados.

Sort Order[madonna@station madonna]$ ls -s /var/log/m* | sort

1236 /var/log/maillog.4

20 /var/log/maillog

216 /var/log/messages.3

3104 /var/log/maillog.1

4 /var/log/messages

[madonna@station madonna]$ ls -s /var/log/m* | sort -n

4 /var/log/messages

20 /var/log/maillog

216 /var/log/messages.3

1236 /var/log/maillog.4

3104 /var/log/maillog.1

24© 2007 Linux. Todos los derechos reservados.

Sort Keys

[madonna@station madonna]$ ls -l /var/log/m* | sort -n -k5

-rw------- 1 root root 651 Oct 5 05:40 /var/log/messages

-rw------- 1 root root 31187 Oct 5 06:05 /var/log/maillog

-rw------- 1 root root 216885 Sep 22 10:22 /var/log/messages.3

-rw------- 1 root root 387345 Oct 5 04:07 /var/log/messages.1

-rw------- 1 root root 567049 Sep 14 04:08 /var/log/messages.4

Opciones para especificar teclas de clasificación

[madonna@station madonna]$ head /etc/passwd | sort -t: -k6

bin:x:1:1:bin:/bin:/sbin/nologin

news:x:9:13:news:/etc/news:

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

sync:x:5:0:sync:/sbin:/bin/sync

halt:x:7:0:halt:/sbin:/sbin/halt

daemon:x:2:2:daemon:/sbin:/sbin/nologin

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

adm:x:3:4:adm:/var/adm:/sbin/nologin

lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

mail:x:8:12:mail:/var/spool/mail:/sbin/nologin

En resumen, hemos visto que el comando sort puede utilizarse para clasificar datos estructurados,mediante la opción -k para especificar el campo de clasificación(quizás más de una vez) y la opción -tpara especificar el delimitador del campo.

25© 2007 Linux. Todos los derechos reservados.

El comando uniq El programa uniq se utiliza para identificar, contar o suprimir

registros duplicados en la información clasificada.

26© 2007 Linux. Todos los derechos reservados.

Conteo de instancias de datos

[madonna@station madonna]$ sort -n trial0 | uniq -u

4

16

[madonna@station madonna]$ sort -n trial1 | uniq -d

5

6

7

8

9

10

Los switches de parametros -d y -u permiten que el comando uniq identifique un dato unico o repetido (-c permite contar ocurrencias)

[madonna@station madonna]$ sort -n trial1 | uniq -c

1 4

4 5

6 6

10 7

10 8

13 9

13 10

9 11

13 12

4 13

8 14

4 15

1 16

2 17

2 18

[madonna@station madonna]$ head trial1

10

10

10

13

8

8

10

10

8

6

27© 2007 Linux. Todos los derechos reservados.

Extraer y reunir texto: cut y paste

Conceptos clave El comando cut extrae textos de archivos de texto, basados en columnas especificadas por bytes, caracteres o campos.

El comando paste fusiona dos archivos de texto por línea.

28© 2007 Linux. Todos los derechos reservados.

Extracción del texto con cut El comando cut extrae columnas de texto desde un archivo

de texto

Opciones para el comando cut.

Especificaciones de intervalo

29© 2007 Linux. Todos los derechos reservados.

Extracción de texto por posición de caracter con cut -c

[student]$ cat /proc/interrupts

CPU0

0: 4477340 XT-PIC timer

1: 25250 XT-PIC keyboard

2: 0 XT-PIC cascade

3: 7344 XT-PIC ehci-hcd

[student]$ grep '[[:digit:]]:' /proc/interrupts | cut -c1-15

0: 4512997

1: 27954

2: 0

3: 7344

[student]$ grep '[[:digit:]]:' /proc/interrupts | cut -c1-5,34-

0: timer

1: keyboard

2: cascade

3: ehci-hcd

30© 2007 Linux. Todos los derechos reservados.

Extracción de campos de texto con cut -f El comando cut también sirve para extraer texto que no está

estructurado por la posición de caracteres, sino por un caracter delimitador tal como un TABULADOR o “:”.

[student@rosemont hwdata]$ head -15 pcitable

# This file is automatically generated from isys/pci.

0x0675 0x1700 "unknown" "Dynalink|IS64PH ISDN Adapter"

0x0675 0x1702 "hisax" "Dynalink|IS64PH ISDN Adapter"

0x09c1 0x0704 "unknown" "Arris|CM 200E Cable Modem“

[student@rosemont hwdata]$ cut -s -f3,4 pcitable | head

"unknown" "Dynalink|IS64PH ISDN Adapter"

"hisax" "Dynalink|IS64PH ISDN Adapter"

"unknown" "Arris|CM 200E Cable Modem"

31© 2007 Linux. Todos los derechos reservados.

Comando paste El comando paste sirve para combinar archivos múltiples en

una sola salida.

[student@station student]$ cat file-1

File-1 Line 1

File-1 Line 2

File-1 Line 3

[student@station student]$ cat file-2

File-2 Line 1

File-2 Line 2

File-2 Line 3

student@station student]$ paste file-1 file-2

File-1 Line 1 File-2 Line 1

File-1 Line 2 File-2 Line 2

File-1 Line 3 File-2 Line 3

32© 2007 Linux. Todos los derechos reservados.

Rastreo de diferencias: diff

Conceptos clave El comando diff resume las diferencias entre dos archivos.

El comando diff es compatible con una gran variedad de formatos de salida que pueden escogerse mediante varias opciones.

Al comando diff se le puede pedir que ignore ciertos tipos de diferencias tales como el uso de espacios en blanco o de mayúsculas.

El comando diff -r resume de modo recursivo las diferencias entre los dos directorios.

Al comparar directorios, se le puede pedir al comando diff que ignore los archivos cuyos nombres de archivo coincidan con patrones especificados.

33© 2007 Linux. Todos los derechos reservados.

Comando diff El comando diff está diseñado para comparar dos archivos

similares, pero no idénticos y que generen salida que describa exactamente la diferencia.

[blondie]$ diff README.pam_ftp.orig README.pam_ftp

11,12c11,12

< could login only with email adress

< "ignore" allow invalid email adresses

---

> could login only with email address

> "ignore" allow invalid email addresses

18a19

> Spelling corrections applied by blondie, 22 Sep 2003

34© 2007 Linux. Todos los derechos reservados.

Opciones para especificar el formato de salida diff

35© 2007 Linux. Todos los derechos reservados.

Traducción de texto: tr

Conceptos clave El comando tr traduce lectura de datos desde la entrada estándar.

En su forma más básica, el comando tr realiza sustituciones byte por byte.

Al utilizar la opción -d, el comando tr borrará caracteres especificados desde un flujo.

Al utilizar la opción -s se comprimirá una serie de caracteres repetidos en un flujo a una sola instancia del caracter.

36© 2007 Linux. Todos los derechos reservados.

Comando tr

El comando tr es una utilidad muy versátil que realiza traducciones de caracter en flujos.

Traducir puede suponer sustituir un caracter por otro, borrar caracteres o "comprimirlos" (contrayendo secuencias repetidas de un caracter en uno).

El comando tr no espera nombres de archivo como argumentos.

el comando tr opera exclusivamente en el flujo de entrada estándar, reservando los argumentos de línea de comandos para especificar conversiones.

37© 2007 Linux. Todos los derechos reservados.

Uso de tr para traducir caracteres

[madonna@rosemont madonna]$ echo "abcdefghi" | tr fed xyz

abczyxghi

tr command expects to be called with two arguments, each of which specify a range of characters

[madonna@rosemont madonna]$ cat /etc/hosts

# Do not remove the following line, or various programs

# that require network functionality will fail.

127.0.0.1 localhost.localdomain localhost rha-server

[madonna@rosemont madonna]$ tr a-z A-Z < /etc/hosts

# DO NOT REMOVE THE FOLLOWING LINE, OR VARIOUS PROGRAMS

# THAT REQUIRE NETWORK FUNCTIONALITY WILL FAIL.

127.0.0.1 LOCALHOST.LOCALDOMAIN LOCALHOST RHA-SERVER

38© 2007 Linux. Todos los derechos reservados.

Revisión ortográfica: aspell Conceptos clave

– El comando aspell -c realiza revisiones ortográficas interactivas en los archivos.

– El comando aspell -l realiza una revisión ortográfica en el flujo de entrada estándar.

– El comando aspell dump puede utilizarse para ver el maestro del sistema o el directorio personal de un usuario.

– Los comandos aspell create personal y aspell merge personal pueden utilizarse para crear o añadirse al directorio personal del usuario de una lista de palabras.

39© 2007 Linux. Todos los derechos reservados.

Using aspell

[prince@station prince] aspell -c toelvis

aspell es el utilitario primario para revisar la ortografía de los archivos de texto.

Hey Elvis!

I heard you were about to take the lab test for the string

procesing workbook in Red Hat Academy. IIRC, its prety

straightforward, if you've been keeping up with the exercises.

LOL, Prince

=========================================

1) processing 6) preceding

2) precessing 7) professing

3) precising 8) promising

4) proceeding 9) proposing

5) prosing

i) Ignore I) Ignore all

r) Replace R) Replace all

a) Add x) Exit

=========================================

?

40© 2007 Linux. Todos los derechos reservados.

Formatear texto (fmt) y dividir archivos (split) Conceptos clave

El comando fmt puede reformatear texto a diferentes anchuras.

Al usar la opción -p, el comando fmt sólo reformateará texto comenzado por el prefijo especificado, preservando el prefijo.

El comando split puede utilizarse para dividir un archivo sencillo en múltiples archivos basados en un número de líneas o en un número de bytes.

41© 2007 Linux. Todos los derechos reservados.

Comando fmt Al igual que la mayoría de los comandos de procesador

de texto encontrados en este cuaderno, el comando fmt interpreta argumentos como nombres de archivos en los cuales operar, u operar en entrada estándar si ninguno es provisto. Su salida se escribe a la salida estándar.

[elvis@station elvis]$ fmt -w60 side_effect.gvim

One side effect of the variety of text editors in Linux,

and in particular the coexistence of text editors and

word processors, is the inconsistencies with which word

wrapping is handled.

[elvis@station elvis]$ fmt -40 side_effect.gvim

One side effect of the variety of text

editors in Linux, and in particular the

coexistence of text editors and word

processors, is the inconsistencies with

which word wrapping is handled.

42© 2007 Linux. Todos los derechos reservados.

Comando split Es usado cuando se desea dividir un archivo en

archivos más pequeños, cada uno con un número especificado de líneas o bytes.

elvis@station elvis]$ split -200 pointless.txt sub_pointless_

[elvis@station elvis]$ wc sub_pointless_a*

200 1800 8892 sub_pointless_aa

200 1800 9000 sub_pointless_ab

200 1800 9000 sub_pointless_ac

200 1800 9000 sub_pointless_ad

200 1800 9001 sub_pointless_ae

66 594 3036 sub_pointless_af

1066 9594 47929 total

43© 2007 Linux. Todos los derechos reservados.