🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #237

Re: sustituir caracteres

#237
From: Gonzalo Pérez de Olaguer Córdoba
Date: Mon, 22 Feb 2010 20:47
75 lines
4050 bytes
Hola jose maria <letrados@usernix.org>
el Mon, 22 Feb 2010 21:07:58 +0100 escribiste:

> * Obtengo un listado gigantesco de la forma siguiente
> ls -1Q -I undel /media/cluster1/trash > fichero.tx
> 
> * Es de un directorio de cuarentena de un cluster, por lo que tiene 
> caracteres especiales, inodos y datos que he de substituir por una ruta 
> correcta a los puntos de montaje reales y me estoy haciendo un lio con cut, 
> sed, tr, etc, al final estoy produciendo 3 ficheros intermedios y al ultimo 
> le he de aplicar a todas las lineas un comando, se ejecuta con bash y cron, 
> no doy con la tecla de algo decente, me da igual el lenguaje.
> 
> * Las lineas recibidas son de este estilo. 
> "0000190E|ftp01|CBR101031|eb|copia server enjul|copia server"
> "0000851B|ftp01|CBR101265|eb|Copia BBDD Sql server|Copia BBDD Sql 
> server_20100217_2305.zip.z021.pgp"
> "00008551|ftp01|CBR101265|eb|Copia Documentos|Copia 
> Documentos_20100219_1900.zip.z220.pgp"
> "00008554|ftp01|CBR101270|eb|dirs.dat.pgp"
> "00008558|ftp01|CBR101270|eb|repair.rep"
> "00008596|ftp01|CBR101331|eb|dirs.dat.pgp"
> "002CBCFF|ftp03|CBR101321|eb|Datos7 19.02.2010 07.12|log_20091002_2216.txt"
> "002CBD00|ftp03|CBR101321|eb|Datos7 19.02.2010 07.12|log_20091003_2204.txt"
> "002CBD01|ftp03|CBR101321|eb|Datos7 19.02.2010 07.12|log_20091004_2208.txt"
> "002CBD02|ftp03|CBR101321|eb|Datos7 19.02.2010 07.12|log_20091005_2250.txt"
> 
> * ignorese el salto de linea, el entrecomillado es una linea completa.
> 
> * Y debo de producir un resultado final como este y aplicarle un comando a 
> cada linea.
> 
> "/media/cluster1/ftp01/CBR101031/copia server enjul/copia server"
> "/media/cluster1/ftp03/CBR101321/eb/Datos7 19.02.2010 
> 07.12/log_20091005_2250.txt"
> 
> * Primero con tr substituyo los | por / , despues con cut busco el primer 
> separador / , y por ultimo substituyo la cadena anterior al separador por 
> "/media/cluster1/  y aplico el comando, en fin un lio y todo esto a traves 
> de cron.

esto lo puedes hacer más fácil con sed:

sed -e 's=^([^/]+)="/media/cluster1='

> * Nota: Lo habitual es que sean unas 700.000.- lineas, no me importa el 
> tiempo de ejecucion, si no que no produzca fallos con los espacios y demas.

Si sĂłlo has de hacer estos dos cambios que explicas aquĂ­, y luego aplicar
un comando a cada lĂ­nea, tendrĂ­as algo asĂ­:

cat fichero_original | tr \| / | sed ... | xargs -1 comando

Lo digo de memoria. Tú sabrás mejor que yo qué es exactamente lo que quieres
hacer. Pero esa secuencia será bastante rápida de ejecutar.

Si quieres un único ejecutable, lo harás bien con perl.

-- 
Gonzalo Pérez de Olaguer Córdoba <gpoc@iies.es> --- www.gpoc.es
PGP key 2861C704 --- F206 5671 6789 425D 111C  1302 214F 1934 2861 C704
Technical Details
Message-ID: <20100222214740.4a8d9519@petres.salonet.snet>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!proxad.net!feeder1-2.proxad.net!newsfeed.straub-nv.de!news.antakira.com!cagarruta.escomposlinux.org!escomposlinux.org!not-for-mail
References: <hluo6u$e3j$1@speranza.aioe.org>

Show Full Headers
Complete Article Headers
X-Google-Thread: 646d03421f,7f533009afd47089
X-Google-Attributes: gid646d03421f,public,usenet
X-Google-NewGroupId: yes
X-Google-Language: SPANISH,UTF8
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!proxad.net!feeder1-2.proxad.net!newsfeed.straub-nv.de!news.antakira.com!cagarruta.escomposlinux.org!escomposlinux.org!not-for-mail
From: Gonzalo Pérez de Olaguer Córdoba <gpoc@iies.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: sustituir caracteres
Date: Mon, 22 Feb 2010 21:47:40 +0100
Organization: escomposlinux.org
Lines: 76
Message-ID: <20100222214740.4a8d9519@petres.salonet.snet>
References: <hluo6u$e3j$1@speranza.aioe.org>
NNTP-Posting-Host: 84.77.244.205
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
X-Trace: cagarruta.escomposlinux.org 1266871663 2172 84.77.244.205 (22 Feb 2010 20:47:43 GMT)
X-Complaints-To: aherrerm@escomposlinux.org
NNTP-Posting-Date: Mon, 22 Feb 2010 20:47:43 +0000 (UTC)
X-Newsreader: Claws Mail 3.5.0 (GTK+ 2.12.12; i486-pc-linux-gnu)