[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: Consulta sobre sed.



> -----Mensaje original-----
> De: Miguel Da Silva - Centro de Matemática [mailto:mdasilva@fing.edu.uy]
> Enviado el: Jueves, 20 de Diciembre de 2007 17:06
> Para: dus
> Asunto: Consulta sobre sed.
>
>
> Estimados, tengo unos archivos de texto cuyos datos son separados por la
> secuencia "::". Un ejemplo sería así...
>
> Debian::Gentoo::Solaris
>
> Y otro ejemplo sería:
>
> ::Gentoo::
>
> Y además variantes de estos 2 ejemplos dados; o sea, puede haber pares
> de "::" seguidos. Pero lo que importa es lo siguinte...
>
> El último campo (el número 30) trae un dato que tiene que estar en el
> décimo campo y además, se mueve hacia la derecha los demás campos.
>
> Ejemplo...
>
> Debian::Gentoo::Solaris::Slackware::CentOS::Fedora
>
> Debian::Gentoo::Fedora::Slackware::CentOS::Solaris
>
> La cuestión es que no quisiera hacer esto en C y estuve viendo de
> hacerlo son sed u otra herramienta similar.
>
> Pero casi no uso sed y lo que hice fue muy sencillo.
>
> Alguna sugerencia?!
>

Yo lo haria con awk

#!/bin/bash
awk -F"::"'{print
$1"::"$2"::"$3"::"........"::"$30"::"$11"::"...."::"$29"::"$10}'

O con php

<?php
$file = fopen($archivo, r);
while($linea = fgets($file))
{
	$campo = explode("::",$linea);
	for ($i=0;$i<9;i++)
	{
		$linea_nueva .= $campo[$i];
	}
	$linea_nueva .= $campo[30];
	for ($i=11;$i<29;i++)
	{
		$linea_nueva .= $campo[$i];
	}
	$linea_nueva .= $campo[10];
}
?>

No soy programador asi que seguro esto no va a andar...jeje
Pero yo lo encararia por alguna de las dos formas.

Saludos


Reply to: