Вы находитесь на странице: 1из 18

Filtrosyherramientas

Unfiltro(ouncomandofiltro)esunprogramaquesabeescribiryleerdatosporloscanalesestndaresdeentraday
salida. Modifica o trata si es preciso el contenido. wc es un filtro. Las herramientas no siempre se comportan como
filtros. Permiten un determinado nmero de acciones en archivos y su contenido, como, por ejemplo, dar formato o
imprimir.

1.Extraccindelosnombresyrutas
Elcomandobasenamepermiteextraerelnombredelarchivoenunaruta.

$ basename /tmp/seb/lista
lista

Elcomandodirnameefectalocontrario,extraelaruta.

$ dirname /tmp/seb/lista
/tmp/seb

2.Bsquedadelneas
Setratadeextraerlneasdeunarchivosegnvarioscriterios.Paraello,disponedetrescomandos:grep,egrepy
fgrep,queleenlosdatosobiendesdeunarchivodeentrada,obiendesdeelcanaldeentradaestndar.

a.grep
Lasintaxisdelcomandogrepes

grep [Opciones] modelo [Archivo1...].

El modelo se compone de criterios de bsqueda que se parecen mucho a los criterios ya expuestos para vi, por
ejemplo.Nohayqueolvidarquesedebeinterpretarestoscriteriosconelcomandogrep,ynoconelshell.Porlo
tanto,hacefaltacerrartodosloscaracteres.

$ cat fic4
Cerdo
Ternera
Buey
rata
Rata
buey
$ grep "[bB]" fic4
Buey
buey

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 1-

Elcomandogreptambinpuedetomaralgunasopcionesinteresantes.

vefectalabsquedainversa:sevisualizantodaslaslneasquenocorrespondenaloscriterios.

cslodevuelveelnmerodelneasencontradas,sinmostrarlas.

inodiferencialasmaysculasdelasminsculas.

nindicaelnmerodelneaparacadalneaencontrada.

lenelcasodearchivosmltiples,indicaenquarchivosehaencontradolalnea.

$ grep -i "b" fic4


Buey
buey

b.egrep
Elcomandoegrepextiendeloscriteriosdebsquedaypuedeaceptarunarchivodecriteriosenentrada.Equivalea
ungrepE.Empleacomocriteriosexpresionesregulares.

egrep -f archivo_criterio archivo_bsqueda

Carcterespecial

Significado

Olgico,laexpresincolocadaantesodespusdebedesaparecer.

(...)

Agrupacindecaracteres.

[...]

Uncarctertieneestaposicinentrelosindicados.

.(punto)

Cualquiercarcter.

Repeticin,elcarctercolocadoantesdebeapareceralmenosunavez.

Repeticin,elcarctercolocadoantesdebeaparecerdeceroanveces.

Elcarctercolocadoantesdebeaparecerunavezcomomximo.

{n}

Elcarctercolocadoantesdebeaparecerexactamentenveces.

{n,}

Aparecenvecesoms.

{n,m}

Apareceentrenymveces.

Enprincipiodecadena.

Enfinaldecadena.

nicamente"buenastardes"y"buenasnoches"empezarnporunamaysculaounaminsculasiestn solosen
unalnea:

[bB]uenas(tardes|noches)$

VerificacinmuyescuetadelavalidezdeunadireccinIP:

echo $IP | egrep ([0-9]{1,3}\.){3}[0-9]{1,3}

Estalneasedescomponedelamanerasiguiente:

- 2-

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

([09]{1,3}\.){3}:www.xxx.yyy.

[09]:uncarcterentre0y9

{1,3}:repetidoentreunaytresveces,porlotanto:x,xxoxxx

\.:seguidodeunpunto

{3}:elconjuntotresveces

Luego[09]{1,3}:.zzz

[09]:uncarcterentre0y9

{1,3}:repetidoentreunaytresveces

c.fgrep
Elcomandofgrepesungrepsimplificadoyrpido(fastgrep)yequivaleaungrepF.Aceptatambinunarchivode
criteriosdebsqueda,perodebetratarsedecriteriossimples,sincaracteresespeciales.Introduzcaenelarchivo
decriterioslneassencillas(textoycifras),unabsquedaporlnea.Fgrepvaabuscarenunarchivometaounflujo
enentradalaslneasquecorrespondenacadaunodeloscriterios.

d.sed
El aprendizaje de sed requerira todo un libro. Sed es un editor de flujo (Stream Editor) que permite filtrar y
transformartexto.Esunpococomouneditorquepermitemodificartextovacomandosdescripts,peroenunpaso
ysinedicininteractiva.Utilizaunjuegoextendidodecomandosprocedentedeleditored.Susintaxisbsicaes:

sed -e <cmd> arch

Parautilizarsed,hayqueaprenderyentenderlasexpresionesregulares.Elcuadrodelcomandoegrepretomala
sintaxisbsicadelasexpresiones.Cualquierlibrosobresedpartedeestasexpresionesyrecprocamente.
Sedseutilizamuyamenudoparasustituirvaloresporotros(sustitucin)osuprimirlneasparticulares(aunquese
podrautilizargrepenestecaso).Lasintaxisbsicadesustitucineslasiguiente:

s/<antiguo>/<nuevo>/[g]

La g final permite realizar una sustitucin en toda la lnea en caso de haya varias coincidencias. Aqu tiene un
ejemploquesustituye__NOMBRE__porPepito:

$ echo "Me llamo __NOMBRE__. Te llamas __NOMBRE__?" | sed -e s/__


NOMBRE__/Pepito/
Me llamo Pepito. Te llamas __NOMBRE?
$ echo "Me llamo __NOMBRE__. Te llamas __NOMBRE__?" | sed -e s/__
NOMBRE__/Pepito/g
Me llamo Pepito. Te llamas Pepito?

Puede colocar un valor numrico en el campo nuevo para precisar, si la bsqueda consta de varios elementos
agrupadosporparntesis,enquelementodelosbuscadosdebetrabajar.Aqutenemosunejemplosencilloque
aadeasteriscosalrededordelnombrepepito:
Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 3-

$ echo pepito | sed -e "s/\(pepito\)/**\1**/"


**pepito**

Parasuprimirtodaslaslneasvacasoquecontienennicamenteespacios:

$ sed -e / *$/d

archivo

3.Columnasycampos
Elcomandocutpermiteseleccionarcolumnasycamposenunarchivo.

a.Columnas
Lasintaxiseslasiguiente:

cut -cColumnas [fic1...]

Unacolumnaeslaposicindeuncarcterenlalnea.Elprimercarctereslacolumna1elsegundo,lacolumna2,
y as sucesivamente. Una lnea de 80 caracteres dispone de 80 columnas. La numeracin empieza en 1. Es el
mtodoidealparaarchivosplanosyconformatofijo,dondecadacampoempiezayterminaconposicionesdadas.
Elformatodeseleccindecolumnaeselsiguiente:

unacolumnasola(p.ej.c2paralacolumna2)

unintervalo(p.ej.c24paralascolumnas2,3y4)

unalistadecolumnas(p.ej.c1,3,6paralascolumnas1,3y6)

lostresalavez(p.ej.c13,5,6,12).

$ cat lista
Producto

precio

cantidades

ratn

30

15

disco

100

30

pantalla

300

20

teclado

45

30

$ cut -c1-5 lista


Produ
ratn
disco
panta
tecla
$ cut -c1-3,10-12,15

- 4-

Prorx

cantidades

rat0

15

dis0

30

pan0

20

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

tec530

b.Campos
El comando cut tambin permite seleccionar campos. Se deben delimitar estos campos por defecto por una
tabulacin, pero el parmetro -d permite seleccionar otro carcter (espacio, ). La seleccin de los campos es
idnticaaladelascolumnas.

El carcter separador debe ser nico. No es posible poner ni dos, ni tres, ni una cadena de separadores. Para
eliminar los caracteres mltiples, utilice tr. Asimismo, el separador por defecto es la tabulacin. Ahora bien, por
defectosesustituyenlastabulacionesconespaciosdentrodeloseditores...

cut -dc -fCampos [fic1...]

Lepresentamosunosejemplos.Elarchivolistacontienecamposseparadosportabulaciones.

$ cat lista
Producto

precio

cantidades

ratn

30

15

duro

100

30

disco

100

30

pantalla

300

20

teclado

45

30

tarjeta

45

30

$ cut -f1 lista


Producto
ratn
duro
disco
pantalla
teclado
tarjeta
$ cut -f1,3 lista
Producto cantidades
ratn

15

duro

30

disco

30

pantalla 20
teclado

30

tarjeta

30

Observe que, si invierte el orden de los campos (f3,1),noobtendrelefectodeseado:loscampossalensiempre


enelsentido1,3.

Acontinuacinvemoscmoaislarlosnombresdeungrupoysusidentificadoresrespectivos:

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 5-

$ cat /etc/group
seb@slyserver:~> cat /etc/group
at:!:25:
audio:x:17:
avahi:!:106:
beagleindex:!:107:
bin:x:1:daemon
cdrom:x:20:
console:x:21:
daemon:x:2:
dialout:x:16:seb,esteban,enrique,public
disk:x:6:
$ cut -d: -f1,3 /etc/group
at:25
audio:17
avahi:106
beagleindex:107
bin:1
cdrom:20
console:21
daemon:2
dialout:16
disk:6

Sinohaydelimitador(tabulacinuotro)enunalnea,cutmuestratodalalnea.

4.Recuentodelneas
Elcomandowc(wordcount)permitecontarlaslneas,laspalabrasyloscaracteres.

wc [-l] [-c] [-w] [-w] fic1


l

-l:cuentaelnmerodelneas

-c:cuentaelnmerodebytes

-w:cuentaelnmerodepalabras

-m:cuentaelnmerodecaracteres

$ wc lista
12

48

234 lista

Elarchivolistacontiene12lneas,48palabrasy234caracteres.

5.Ordenacindelneas
El comando sort permite ordenar las lneas. Por defecto, la ordenacin se hace sobre toda la tabla en orden

- 6-

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

creciente. La ordenacin es posible a partir de uno o varios campos. El separador de campos por defecto es la
tabulacino,almenos,unespacio.Sihayvarioscampos,elprimeroeselseparadorlosdemssoncaracteresdel
campo.
LasintaxisdesorthaevolucionadodesdehacevariosaosyLinuxhaaplicadounestndar.Adems,yanoutilizala
antiguasintaxisbasadaen+/.Ensulugar,hayqueutilizarelparmetro -k.Lanumeracindeloscamposempieza
con1.

sort [opciones] [-k pos1[,pos2]] [fic1...]


$ cat lista
ratn

ptico

30

15

duro

30giga

100

30

duro

70giga

150

30

disco

zip

12

30

disco

blando

10

30

pantalla

15

150

20

pantalla

17

300

20

pantalla

19

500

20

teclado

105

45

30

teclado

115

55

30

tarjeta

sonido

45

30

tarjeta

vdeo

145

30

Acontinuacinvemoscmoordenarporordenalfabticoapartirdelaprimeracolumna:

$ sort -k 1 lista
disco

blando

10

30

disco

zip

12

30

duro

30giga

100

30

duro

70giga

150

30

pantalla

15

150

20

pantalla

17

300

20

pantalla

19

500

20

ratn

ptico

30

15

tarjeta

sonido

45

30

tarjeta

vdeo

145

30

teclado

105

45

30

teclado

115

55

30

Algunosparmetros

Opcin
d

Funcin
Dictionnary sort (ordenacin de diccionario). Slo toma como criterio de ordenacin las letras, las
cifrasylosespacios.

Ordenacinnumrica,idealparalascolumnasdecifras.

Ignoralosespaciosalprincipiodelcampo.

Nohaydiferenciasentremaysculasyminsculas(conversinenminsculasyluegoordenacin).

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 7-

Reverse,ordenacinenordendecreciente.

tc

Nuevodelimitadordecampoc.

Ejemplo:ordenacinnumricaapartirdelospreciosporproductosenordendecreciente:

$ sort -n -r -k 3 lista
pantalla

19

500

20

pantalla

17

300

20

pantalla

15

150

20

duro

70giga

150

30

tarjeta

vdeo

145

30

duro

30giga

100

30

teclado

115

55

30

teclado

105

45

30

tarjeta

sonido

45

30

ratn

ptico

30

15

disco

zip

12

30

disco

blando

10

30

Tambinesposibleejecutarlaordenacindesdeundeterminadocarcterdeuncampo.Paraello,debeespecificarel
".pos":k1.3empezarlaordenacinapartirdeltercercarcterdelcampo1.

6.Eliminacindelaslneasrepetidas
El comando uniq permite suprimir las lneas repetidas en flujos de entrada o archivos ordenados. Por ejemplo, a
continuacin se muestra cmo sacar nicamente la lista de los GID realmente utilizados como grupo principal de
usuarios:

$ cut -d: -f4 /etc/passwd | sort -n | uniq


0
1
2
7
8
12
13
14
25
49
51
62
...

7.Unindedosarchivos
a.Enloscamposcomunes
- 8-

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

Elcomando joinpermiteefectuarlaunindedosarchivosenfuncindeuncampocomn.Sedebenordenarlos
dosarchivosenloscamposespecificadosenlaunin.

join [-tc] [-1 n] [-2 m] fic1 fic2


La opcin -t indica los separadores, -1 el campo del primer archivo y -2 el campo del segundo archivo, en los
cuales efectuar la unin. Observe que

join gestiona mal los duplicados y puede que se detenga como

consecuenciadeello.

Es posible que el comando joinnoleproporcioneelresultadoesperado.Laraznesquesedetieneencuantono


encuentracorrespondenciaentredoslneas.

b.Lneaalnea
El comandopaste agrupa n archivos en uno. Para ello, concatena las lneas de cada uno de los archivos en una
solalnea:lnea1defic1conlnea2defic2,lnea3defic3,yassucesivamente.Esunpocolocontrariodecut.El
separadorpordefectoeslatabulacin,peropuedeprecisarundelimitadorcon-d.

$ cat fic1
lista_a
lista_b
lista_c
$ cat fic2
lista_a2
lista_b2
lista_c2
$ paste -d: fic1 fic2
lista_a:lista_a2
lista_b:lista_b2
lista_c:lista_c2

8.Divisindeunarchivoenpartes
a.Recortar
Aqutenemosuncomandomuyprctico,split,quepermiterecortarungranarchivoenvariostrozosconuntamao
determinado.Lossistemasdearchivosnosontodosigualesfrentealtamaomximodeunarchivo.EnLinux,el
problema no es habitual, ya que un sistema de archivos de tipo ext3 puede soportar archivos de 1 TB (TB =
TeraByte 1 Terabyte = 1024 GB), o sea, el equivalente a unos 130 DVD de doble capa. Pero las bandas
magnticas,oenmenormedidalosdiscosremovibles,nodisponendeestaposibilidad.
Se suelen formatear los pendrives o un disco externo con un sistema de archivos de tipo VFAT, procedente del
mundo de Microsoft. Este sistema de archivos, que procede de DOS y luego de Windows 9x, garantiza una
compatibilidad entre todos los sistemas (Unix, Windows, Mac OS), ya que quien puede lo ms, puede lo menos.
VFAT(omsbienFAT16oFAT32)soportanicamentearchivosdeuntamaomximode4GB.UnaimagenISOde
DVD o una carpeta de copia de seguridad no puede entrar en un solo bloque. Por lo tanto, hace falta dividir el

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 9-

archivoenvariaspartes.

split [-l n] [-b n[bkm] [archivo [prefijo]]

Elcomandopuedefuncionarsegndosmodos:

recorteporlneascon-l:losarchivosdesalidatendrntodosnlneasdetexto(salvoelltimosisedaelcaso)

recorteatamaofijocon-b:losarchivostendrntodosuntamaofijodenbytes.Elsufijobindicauntamaoden
bloques(512bytes),kindicankB(1024bytes)ymindicanMB(1024 kB).

Comocualquierfiltro,splitpuedecogerunflujodeentrada,loqueocurresinoseindicaningnarchivo,osihayun
guin.Unprefijodefineelnombredelosarchivosensalida.Aqutenemosunarchivode1 GBacortarenpartesde
150MB.Elprefijoesfic.Cadaarchivodesalidasellamaficaa,ficab,ficac,ficad,yassucesivamente.

$ ls -l granarchivo
-rw-r--r-- 1 seb users 1073741824 mar 12 19:47 granarchivo
$ split -b 150m granarchivo fic
$ ls -l fic*
-rw-r--r-- 1 seb users 157286400 mar 12 20:15 ficaa
-rw-r--r-- 1 seb users 157286400 mar 12 20:15 ficab
-rw-r--r-- 1 seb users 157286400 mar 12 20:15 ficac
-rw-r--r-- 1 seb users 157286400 mar 12 20:16 ficad
-rw-r--r-- 1 seb users 157286400 mar 12 20:16 ficae
-rw-r--r-- 1 seb users 157286400 mar 12 20:16 ficaf
-rw-r--r-- 1 seb users 130023424 mar 12 20:16 ficag

b.Reconstruir
Unalneabastaparareconstruirunarchivodivididoconlaayudadelasredirecciones:

$ cat fic* > newfic


$ ls -l newfic
-rw-r--r-- 1 seb users 1073741824 mar 12 20:47 newfic

9.Sustitucindecaracteres
a.Listadecaracteres
Elcomandotrpermitesustituirunoscaracteresconotrosysloaceptadatosqueprovengandelcanaldeentrada
estndar,nodelosarchivos.

tr [opciones] original destino

El original y el destino representan uno o varios caracteres. Se sustituyen los caracteres originales con los de
destinoenelordenindicado.Loscorchetespermitendefinirintervalos.

- 10 -

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

Porejemplo,parasustituirlaoporlaeylaiporlaa:

$ cat lista | tr "oi" "ea"


Predut

ebjete

precie

cantadades

raten

ptaque 30

15

dure

30gaga

100

30

dure

70gaga

150

30

dasce

zap

12

30

dasce

blande

10

30

pantalla

15

150

20

pantalla

17

300

20

pantalla

19

500

20

teclade

105

45

30

teclade

115

55

30

tarjeta

senade

45

30

tarjeta

vadee

145

30

Conestecomando,puedeconvertirunacadenaenmaysculasoenminsculas.

$ cat lista | tr "[a-z]" "[A-Z]"


PRODUCTO

OBJETO

PRECIO

CANTIDADES

RATN

PTICO

30

15

DURO

30GIGA

100

30

DURO

70GIGA

150

30

DISCO

ZIP

12

30

DISCO

BLANDO

10

30

PANTALLA

15

150

20

PANTALLA

17

300

20

PANTALLA

19

500

20

TECLADO

105

45

30

TECLADO

115

55

30

TARJETA

SONIDO

45

30

TARJETA

VDEO

145

30

Eliminarlasrepeticiones
Sobretodo,tradmitedosparmetros,-s(squeeze)y-d(delete),quepermitensuprimircaracteres,duplicadoso
no.Esperfectoenelcasodeseparadoresmltiples.Acontinuacindamosunejemploprcticoenelcualsebusca
aislarladireccinIPdeunamquina.

$ /sbin/ifconfig eth0
eth0

Vnculo encap:Ethernet
inet adr:10.9.238.170

HWaddr 00:13:D3:D7:A4:6C
Bcast:10.9.239.255

UP BROADCAST RUNNING MULTICAST

MTU:1500

asque:255.255.252.0
Metric:1

RX packets:15054381 errors:0 dropped:0 overruns:0 frame:0


TX packets:4991811 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
RX bytes:4157389034 (3964.7 Mb)

TX bytes:374974072 (357.6 Mb)

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 11 -

Interrupcin:22 Direccin bsica:0xcc00

Sloleinteresalalneaquecontieneinet:

$ /sbin/ifconfig eth0| grep "inet "


inet dir:10.9.238.170 Bcast:10.9.239.255

Mscara:255.255.252.0

ParaaislarladireccinIPcolocadadespusde" inet
estecasouncutnosdevolvera" 10.9.238.170

dir:"elseparador" :"puedeparecerinteresante,peroen
Bcast",loquenoconviene.Laartimaa consisteensustituir

todoslosespaciosporunsolo":".Elparmetro-ssustituyeunacadenadencaracteresidnticosporunosolo.Si
noseprecisa,eselmismocarcterencasocontrario,setratadeuncarcterdesustitucindeterminado.

$ /sbin/ifconfig eth0| grep "inet " | tr -s " " ":"


:inet:dir:10.9.238.170:Bcast:10.9.239.255:Mscara:255.255.252.0

Yaslofaltacontar:ladireccinIPestencuartaposicin(elprimercampoantesdelprimer":"estvaco).

$ /sbin/ifconfig eth0| grep "inet " | tr -s " " ":" | cut -d: -f4
10.9.238.170

b.Tabulacionesyespacios
La mayora de los editores sustituyen las tabulaciones por espacios. Ahora bien, algunos comandos esperan a
obtenertabulacionescomodelimitadoresdecampos(eselcasodecut).Sinopuedeapaarsecon tr,tieneasu
disposicindoscomandosparaestecasoespecfico.
El comando expand convierte las tabulaciones en espacios. El comando unexpand convierte los espacios en
tabulaciones.Osea,elarchivolistasegnelmodeloanterior,enelcualseseparanlascolumnasporespaciosen
lugardetabulaciones.Enelprimercaso,elresultadonoeselesperadoparanada.Elcomandocutintentasacarel
tercercampodeunarchivotabulado.Comonohaytabulaciones,muestratodalalnea.

$ cut -f1 lista


Producto

objeto

precio

cantidades

ratn

ptico

30

15

duro

30giga

100

30

duro

70giga

150

30

disco

zip

12

30

disco

blando

10

30

...

Elcomandounexpandconelparmetro-asustituyetodaslassecuenciasdealmenosdosespaciosporelnmero
necesariodetabulaciones.Estavezelresultadoescorrecto.

- 12 -

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May


$ unexpand -a lista | cut -f1
Producto
ratn
duro
duro
disco
disco
...

10.Visualizacindetexto
a.Enpantallacompleta
Nada impide desviar cualquier flujo para visualizarlo en la pantalla o por impresora. Aqu presentamos algunos
comandos.

pginaporpgina:pg,more,less

enbloque:cat

alrevs:tac

endumphexadecimal:hexdump

creacindeunbanner:banner

formateoparaimpresin:pr

numerarlaslneas:catnonl

b.Elprincipiodeunarchivo
Paraverelprincipiodelcontenidodeunarchivo,utiliceelcomandohead.

head [-c nbcar] [-n nblneas] [fic1...]


Elparmetro -cpermiteprecisarelnmerodebytesdeencabezamientoquevisualizar.Pordefectosevisualizan
diezlneas.Elparmetro -npermiteindicarelnmerodelneasquevisualizar.Esposibleindicar directamenteel
nmerodelneas:

head [-nblneas] [fic1...]


$ head -3 lista
Producto objeto

precio

cantidades

ratn

ptico

30

15

duro

30giga

100

30

c.Finymododeesperadearchivo

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 13 -

Paraverlasltimaslneasdeunarchivo,utiliceelcomandotail.

tail [+/-valor[b/c]] [-f] [fic1...]


Al igual que para head, por defecto se visualizan las diez ltimas lneas. El valor -numlneas permite modificar
este estado. Use c para indicar un nmero de caracteres. Una b indica un nmero de bloques (512 bytes por
bloque).
Finalmente, la opcin -f deja el archivo abierto. Si se inserta ms informacin en l (por ejemplo, un archivo de
registros),sevisualizarsucontenidoentiemporealenlapantallahastaqueelusuariolointerrumpademanera
voluntaria([Ctrl]C).

$ tail -5 lista
pantalla

19

500

20

teclado

105

45

30

teclado

115

55

30

tarjeta

sonido

45

30

tarjeta

vdeo

145

30

$ tail -10c lista


eo

145

30

d.Darformatoaunasalida
El comando column permite dar formato de tabla a la salida de un comando. La opcin -t determina cuntas
columnas se mostrarn en la salida y aade espacios para alinearlas. La opcin -s permite indicar cul es el
separador.

$ column -s: -t /etc/group


root

daemon

bin

sys

adm

tty

disk

lp

seb

11.Duplicacindelcanaldesalidaestndar
En algunos casos, como por ejemplo en la generacin de archivos de registros, puede ser necesario colocar el
resultadodeuncomandoenunarchivoyalavezfiltrarestemismoresultadoconotrocomando. Paraello,utiliceel
comando tee, que permite duplicar el flujo de datos. Este comando lee el flujo de datos que proviene de otro
comando por el canal de entrada, lo escribe en un archivo y restituye este flujo de forma idntica por el canal de
salida.Pordefecto,elarchivogeneradosobrescribeelantiguo siexiste.

tee [-a] nombre_fic

- 14 -

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

Elparmetro -asignificaappend.Enestecaso,nosesobrescribeelarchivo,sinoqueseinsertalainformacinal
final.Porejemplo,supongamosquequiereobtenerenunarchivolalistadelosnombresdeusuarioyquealmismo
tiemposevisualicesunmeroenlapantalla.

$ cat /etc/passwd | cut -d: -f1 | tee users | wc -l


65
$ cat users
root
nobody
nobodyV
daemon
bin
uucp
uucpa
auth
cron
lp
tcb
...

12.Comparacindearchivos
Los dos comandos que permiten comparar el contenido de dos archivos, o de un archivo y de un flujo, son los
comandosdiffycmp.

a.diff
Elcomandodiffindicalasmodificacionesquehayqueaportaralosdosarchivosenentradaparaquesucontenido
seaidntico.

diff [-b] [-e] fic1 fic2


Laopcin-bpermiteignorarlosespacios(blank),ylaopcin-epermitegenerarunscripted(noloutilizaremos).
Estecomandodevuelvetrestiposdemensajes:

APPEND: lnea1 a lnea3,lnea4, ex 5 a 6,8significa:enlalnea5defic1hayqueinsertarlas


lneas6a8defic2paraquesuscontenidosseanidnticos.

DELETE: lnea1,lnea2 d lnea3, ex 7,9 d 6significa:sedebensuprimirlaslneas7a9defic1,


noexistendetrsdelalnea6defic2.

CHANGE: lnea1,lnea2 c lnea3,lnea4, ex 8,12 c 9,13significa:sedebeintercambiarlas


lneas8a12defic1contralaslneas9a13defic2.

Encualquiercaso,elsigno"<"indicalaslneasdefic1concernientesyelsigno">"laslneasdefic2concernientes.

$ cat lista
Producto

objeto

precio

cantidades

ratn

ptico

30

15

duro

30giga

100

30

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 15 -

duro

70giga

150

30

disco

zip

12

30

disco

blando

10

30

pantalla

15

150

20

pantalla

17

300

20

pantalla

19

500

20

teclado

105

45

30

teclado

115

55

30

tarjeta

sonido

45

30

tarjeta

vdeo

145

30

precio

cantidades

$ cat lista2
Producto

objeto

ratn

botones 30

15

duro

30giga

100

30

duro

70giga

150

30

disco

zip

12

30

disco

blando

10

30

pantalla

15

150

20

pantalla

17

300

20

pantalla

19

500

20

pantalla

21

500

20

teclado

105

45

30

teclado

115

55

30

Elarchivolistaeseloriginal.Enlista2sehamodificadolasegundalnea,sehaaadidounalneapantallaysehan
suprimidolasltimasdoslneas.

$ diff lista lista2


2c2
< ratn

ptico

30

15

botones 30

15

--> ratn
9a10
> pantalla 21

500

20

< tarjeta sonido

45

30

< tarjeta vdeo

145

30

12,13d12

2c2:sedebenintercambiarlaslneas2delistaylista2(debenconcordaroenpticooenbotones).

9a10:despusdelalnea9delista(pantalla19),hayqueaadirlalnea10(pantalla21)delista2.

12,13d12:sedebensuprimirlaslneas12y13delista(tarjetadesonidoyvdeo),yaquenoexistendespusde
lalnea12delista2.

b.cmp
Elcomandocmpcomparalosarchivoscarcterporcarcter.Pordefecto,elcomandoseparaencuantoencuentra
laprimeradiferenciaeindicalaposicin.

- 16 -

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

cmp [-l] [-s] fic1 fic2


El parmetro -l detalla todas las diferencias en tres columnas. La primera columna representa el nmero de
carcterlasegunda,elvaloroctalASCIIdelcarctercorrespondientedefic1,ylatercera,elvaloroctalASCIIdel
carctercorrespondientedefic2.
Laopcin-sdevuelvenicamenteelcdigodeerror(novisible),alquesepuedeaccederporecho$?.

$ cmp lista lista2


lista lista2 differ: char 38, line 2
$ cmp -l lista lista2
38 157 142
39 160 157
40 164 165
41 151 164
42 161 157
43 165 156
44 145 163
182 143 145
183 154 143
...

13.Plazodeespera
Elcomandosleeppermiteesperarelnmerodesegundosindicados.Elscriptseinterrumpeduranteestetiempo:el
nmerodesegundosyunenterocomprendidoentre0ycuatromilmillones(136aos).

$ sleep 10

14.Controlarelflujo
El comando pv, a menudo desconocido, permite responder a una pregunta frecuente: qu pasa en la tubera
mientras que los datos pasan de un proceso a otro? Cuntos datos? Cunto va a tardar? pv es un monitor de
flujo. Se intercala generalmente entre uno y otro comando (como tee), y analiza el flujo que recibe antes de
reenviarloasudestino.Deestaforma,sabeloquesehatransferido,ypuedemostrarunabarradeprogreso,por
ejemplo.Veamosdosejemplos:

Copiarunarchivo

[jolivares@slyserver ~]$ pv test > test2


50MiB 0:00:02 [24,1MiB/s] [================>

] 52% ETA

Duracindelacompresindeunarchivo

pv /boot/vmlinuz-3.14.7-200.fc20.x86_64 | gzip > test.gz

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

- 17 -

5,26MiB 0:00:00 [6,05MiB/s] [================================>] 100%

- 18 -

Editions ENI Tous droits rservs Copie personnelle de Noe Fernando Solis May

Вам также может понравиться